WPF Datagrid MouseBinding MVVM

时间:2018-02-02 13:34:21

标签: wpf mvvm datagrid

我设法双击我的一个datagrid行,通过这个xaml在我的viewmodel上执行一个命令:

enter image description here

当我点击第一列区域中的某个区域(绑定到只读ID)时,这很有效,但是当在第二列中的文本框区域中完成双击时失败(CustomerNumber,当然,当然抓住双击)。

对于这两种情况,哪种方式可以像MVVM一样处理双击?

1 个答案:

答案 0 :(得分:1)

您可以将DataGridTextColumn替换为DataGridTemplateColumn,并将MouseBinding添加到TextBox中的CellEditingTemplate

<DataGridTemplateColumn Header="Customer Number">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding CustomerNumber}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBox Text="{Binding CustomerNumber}">
                <TextBox.InputBindings>
                    <MouseBinding Gesture="LeftDoubleClick" 
                                  Command="{Binding DataContext.EditCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
                </TextBox.InputBindings>
            </TextBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>