当我在WPF中更改数据网格内的下拉列表时,datagridcellleditending事件不会触发
本文关键字:datagridcellleditending 下拉列表 事件 WPF 网格 数据网 数据 | 更新日期: 2023-09-27 18:17:31
我使用以下代码在我的DataGridTemplateColumn
中使用ComboBox
:
<DataGridTemplateColumn Header="MyHeader" Width="50">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Width="Auto" Text="{Binding Path=MyVal}" ToolTip="{Binding MyDisplayName}"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Width="50" Height="17" ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}},Path=DataContext.MyList}"
SelectedValuePath="MyValPath" SelectedValue="{Binding MySelectedVal}" SelectedItem="{Binding MyObject}" DisplayMemberPath="MyDisplayName"
FontSize="12" >
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
CellTemplate
是显示我的文本(自定义文本选定的值)和CellEditingTemplate
包含我的ComboBox
,它有实际的列表。
当我从下拉菜单中选择一个值时,我必须点击数据网格的另一部分才能触发DataGridDiagnosticCellEditEnding
。
我想让它在我选择一个值或改变我的ComboBox
的值时被触发。
我尝试添加以下代码,但它不起作用:
<ComboBox Width="50" Height="17" ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}},Path=DataContext.MyList}"
SelectedValuePath="MyValPath" SelectedValue="{Binding MySelectedVal}" SelectedItem="{Binding MyObject, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="MyDisplayName" FontSize="12" >
我也试过添加IsSynchronizedWithCurrentItem="True"
.
我试了试你的代码,我得到了一个修复:
-
在DataGrid列的ComboBox上订阅关闭事件
-
实现事件处理程序并引发路由事件
CommitEditCommand属于DataGrid类:
private void ComboBoxDropDownClosed(object sender, EventArgs e)
{
DataGrid.CommitEditCommand.Execute(datagrid1,datagrid1);
}
从那里你落在数据网格中。CellEditting断点
下面是工作解决方案:http://1drv.ms/1LFB5Gc
对