如您所知,在没有行为的情况下,您无法将事件直接绑定到命令:
<DataGrid>
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseDoubleClick">
<i:InvokeCommandAction Command="{Binding TradeEntryCommand"} />
</i:EventTrigger>
</i:Interaction.Triggers>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
这完全正常,但是现在我必须通过双击DataGrid本身双击Cell来重构它.(我不在乎点击了哪个单元格)
我希望现在在Cell Style中定义这个behviour,如下所示:
<Style x:Key="DefaultCellStyleBase" TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<ControlTemplate.Triggers>
<EventTrigger RoutedEvent="PreviewMouseDoubleClick">
?????????
</EventTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<!-- ... -->
</Style>
Run Code Online (Sandbox Code Playgroud)
但是我如何从上面引入行为来触发命令呢?
非常感谢,
由于您正在重新模拟DataGridCell,因此可以将触发器添加到控件模板中的根元素.就像是:
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid x:Name="root" Background="Transparent">
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseDoubleClick">
<i:InvokeCommandAction Command="{Binding TradeEntryCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Grid>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17060 次 |
| 最近记录: |