gpt4 book ai didi

wpf - DataGrid 通过单击 UpdateSourceTrigger = SourceUpdated 捕获单元格值更改事件

转载 作者:行者123 更新时间:2023-12-02 02:02:25 25 4
gpt4 key购买 nike

我正在努力使用 DataGrid 捕获事件。我想要实现的是,当用户在数据网格单元格的复选框上单击一次时,会触发一个事件,我可以获得当前单元格值。但是,CellChangedEvent 仅在选择更改时触发,而 CellEditingEvent 要么在单元格失去焦点时触发,要么从不触发。如果我尝试通过执行以下操作使复选框可通过单击进行修改,它永远不会触发:

<DataGrid Grid.ColumnSpan="2" Grid.Row="1" Grid.Column="0" AutoGenerateColumns="True" ItemsSource="{Binding MasterDataTable, Mode=TwoWay}" CanUserAddRows="False" Margin="10 5" CurrentCellChanged="DataGrid_CurrentCellChanged">
<DataGrid.Resources>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="IsEditing" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
</DataGrid>

当用户单击单元格内的复选框时,如何立即调用方法?提前致谢。

最佳答案

1) 在您的 DataGrid 中注册 TargetUpdated 事件。

2) 指定一个 Column ,最好设置 AutoGenerateColumns=False

3) 在您的 Binding 标记中的 NotifyOnTargetUpdated 属性(您的目标是您的复选框)。

4) 在您的绑定(bind)中 UpdateSourceTrigger=PropertyChangedMode=TwoWay(不是 DataGrid 的默认行为)。

XAML:

 <DataGrid TargetUpdated="DataGrid_TargetUpdated" 
AutoGenerateColumns="False"
ItemsSource="{Binding SomeValues, Mode=OneWay}" CanUserAddRows="False" >
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding Path=., NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Width="*"/>
</DataGrid.Columns>
</DataGrid>

在 CS 中:(您可能不想处理该事件。)

   private void DataGrid_TargetUpdated(object sender, DataTransferEventArgs e)
{
// Do what ever...
}

关于wpf - DataGrid 通过单击 UpdateSourceTrigger = SourceUpdated 捕获单元格值更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20174094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com