来自DataGridTemplateColumn

时间:2015-09-12 18:55:52

标签: c# wpf datagrid user-controls

我坚持看似基本的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>

1 个答案:

答案 0 :(得分:0)

这样做的简单方法是给网格命名(theGrid),像这样在按钮上添加一个点击处理程序......

<Button Content="Cancel!" Click="Button_Click">

...然后在处理程序中取消编辑:

private void Button_Click(object sender, RoutedEventArgs e)
{
    theGrid.CancelEdit();
}

执行此操作的“正确”方法是使用命令处理程序创建视图模型,将按钮的Command属性绑定到该模型,然后使用附加行为监视视图模型中的事件,并在触发时触发取消

相关问题