2017-02-21 79 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