【发布时间】:2019-01-12 14:55:42
【问题描述】:
我想在全局样式资源中为DataGrid 添加一个MouseBinding,以便为每个DataGrid 触发基本ViewModel 中定义的“EditCommand”。
我尝试的方式如下所示。但是,DataGrid 没有显示 - 这是有道理的,因为 ContentPresenter 是空的。我必须添加什么才能显示应用了InputBindings 的常规DataGrid?
<Style x:Key="StandardTabelle" TargetType="{x:Type DataGrid}">
<Setter Property="Margin" Value="5"/>
<Setter Property="Background" Value="White"/>
<Setter Property="AlternatingRowBackground" Value="#ebecec"/>
<Setter Property="FontSize" Value="12" />
<Setter Property="RowHeight" Value="24"/>
<Setter Property="CanUserAddRows" Value="False"/>
<Setter Property="CanUserDeleteRows" Value="False"/>
<Setter Property="CanUserReorderColumns" Value="False"/>
<Setter Property="CanUserResizeRows" Value="False"/>
<Setter Property="CanUserResizeColumns" Value="False"/>
<Setter Property="IsReadOnly" Value="True" />
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGrid}">
<ContentPresenter>
<!--What goes here to show the regular content?-->
<ContentPresenter.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding DataContext.EditCommand}" />
</ContentPresenter.InputBindings>
</ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
【问题讨论】:
-
你的目标是datagrid,然后决定它里面有一个contentpresenter。那是行不通的。 stackoverflow.com/questions/1104601/… 忽略标题。使用附加属性方法添加输入绑定。或者。定义一个包含绑定的内容控件模板,然后在需要输入绑定时使用其中一个包含数据网格的模板。