我坚持看似基本的DataGridTemplateColumn问题。
我使用DataGridTemplateColumn创建了一个WPF DataGrid (下面的示例代码)。在DataGridTemplateColumn中,我为CellEditingTemplate创建了一个UserControl。在这个UserControl中,我有一个按钮(和/或想监视按键等),我想用它来取消(或提交)对datagrid单元格的更改。
如何从UserControl中将DataGrid通知给CancelEdit?
<DataGrid
AutoGenerateColumns="False"
ItemsSource="{Binding Items}">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<StackPanel>
<TextBox Text="{Binding Text}"/>
<Button Content="Cancel!">
<!--
How to make this Button Cancel Editing?
Click="Cancel"
Command="{Binding CancelCommand}"
-->
</Button>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:0)
这样做的简单方法是给网格命名(theGrid),像这样在按钮上添加一个点击处理程序......
<Button Content="Cancel!" Click="Button_Click">
...然后在处理程序中取消编辑:
private void Button_Click(object sender, RoutedEventArgs e)
{
theGrid.CancelEdit();
}
执行此操作的“正确”方法是使用命令处理程序创建视图模型,将按钮的Command属性绑定到该模型,然后使用附加行为监视视图模型中的事件,并在触发时触发取消