WPF禁用的DatagridRow和ContextMenu



我有一个绑定到自定义对象集合的数据网格。

这个数据网格允许用户在右键单击一行时访问上下文菜单。我通过TextBlock样式来实现这一点:

<Style x:Key="DatagridTextblockStyle"
TargetType="{x:Type TextBlock}">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="First action" />
</ContextMenu>
</Setter.Value>
</Setter>
</Style>

如果自定义对象的"IsActive"布尔属性为false,它还显示可能被禁用的行。

我通过DataGrid.RowStyle:

<DataGrid ItemsSource="{Binding MyCustomObjects}">
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsActive}"
Value="True">
<Setter Property="IsEnabled"
Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>

这很好用。然而,问题是,当一行被禁用时,上下文菜单将不再可用。

我想不出办法解决这个问题。

有什么想法吗?

ElementStyle:中将ContextMenuService.ShowOnDisabled附加属性设置为true

<Style x:Key="DatagridTextblockStyle" TargetType="{x:Type TextBlock}">
<Setter Property="ContextMenuService.ShowOnDisabled" Value="True" />
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="First action" />
</ContextMenu>
</Setter.Value>
</Setter>
</Style>

最新更新