2017-02-21 67 views
1

我有一个简单的datadtgrid 3列。我想在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处理PreviewMouseLeftButtonDown事件为DataGridCell

<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