【发布时间】:2018-02-02 13:34:20
【问题描述】:
我设法通过这个 xaml 处理了双击我的数据网格行以在我的视图模型上执行命令:
当我单击第一列区域中的某个位置(绑定到只读 ID)时,这非常有效,但是当在第二列中的文本框区域中双击时失败(CustomerNumber,当然捕获双击)。
在这两种情况下,哪一种类似于 MVVM 的方式来处理双击?
【问题讨论】:
我设法通过这个 xaml 处理了双击我的数据网格行以在我的视图模型上执行命令:
当我单击第一列区域中的某个位置(绑定到只读 ID)时,这非常有效,但是当在第二列中的文本框区域中双击时失败(CustomerNumber,当然捕获双击)。
在这两种情况下,哪一种类似于 MVVM 的方式来处理双击?
【问题讨论】:
您可以将DataGridTextColumn 替换为DataGridTemplateColumn,并将MouseBinding 添加到CellEditingTemplate 中的TextBox:
<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>
【讨论】: