2017-02-21 9 views
1

私は3列の単純なdatadtridを持っています。私はColumnA細胞の "データトリガ"を取得したいと思います。ユーザーがColumnAのセルのいずれかを選択した場合は、「その値を取得して」何かを行います。最終的に、私はそのセルの値を使って別のデータグリッドを設定します。しかし、まず、データトリガーを列に置き、その情報をコード内に抽出したいだけです。ここで列のセルのデータトリガー - Datagrid WPF C#

は、XAMLコードです:

私は列が、さらに進行する方法がないという考えに<style.triggers>を入れました。

<DataGrid Grid.Row="1" x:Name="ProducerReport1" ItemsSource="{Binding PopulateProducerData}" AutoGenerateColumns="False"             > 

              <DataGrid.Columns> 
               <DataGridTextColumn Header="ColumnA" Binding="{Binding ProducerName, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True" > 

                <DataGridTextColumn.CellStyle> 
                 <Style TargetType="{x:Type DataGridCell}"> 
                  <Style.Triggers> 

                  </Style.Triggers> 
                 </Style> 
                </DataGridTextColumn.CellStyle> 


                </DataGridTextColumn> 
    <DataGridTextColumn Header="ColumnB" Binding="{Binding reservoirname, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True" > 

    </DataGridTextColumn> 
<DataGridTextColumn Header="ColumnC" Binding="{Binding subsectorname, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True" > 

</DataGridTextColumn> 

答えて

1

あなたがCellStyleを使用してDataGridCellためPreviewMouseLeftButtonDownイベントを処理できます。

<DataGridTextColumn Header="ColumnA" Binding="{Binding ProducerName, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True"> 
    <DataGridTextColumn.CellStyle> 
     <Style TargetType="DataGridCell"> 
      <EventSetter Event="PreviewMouseLeftButtonDown" Handler="dg_MouseLeftButtonDown" /> 
     </Style> 
    </DataGridTextColumn.CellStyle> 
</DataGridTextColumn> 

private void dg_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    DataGridCell cell = sender as DataGridCell; 
    dynamic dataObject = cell.DataContext; 
    string producerName = dataObject.ProducerName; 
    //do something... 
} 
+0

おかげでチームメイト! @ mm8 – user7157732