我正在尝试向我的WPF数据网格添加一个特定于每一行的上下文菜单,因为它的项目需要依赖于该行的DataContext。例如,如果我知道该行尚未编辑,则可能会禁用“保存”。
我正在查看Create contextmenus for datagrid rows的已接受答案,并尝试将其调整为我正在使用的现有xaml,但我不知道如何在现有的RowStyle之上使用此解决方案。
如果我复制并粘贴上下文菜单代码一切正常,但我已经为RowStyle提供了这个:
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="AlternationIndex" Value="1">
<Setter Property="Background" Value="#eed3f7" />
</Trigger>
[...]
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
我不明白如何融入:
<DataGrid RowStyle="{StaticResource DefaultRowStyle}"/>
请帮忙!
答案 0 :(得分:1)
我猜你已经看了很长时间以至于你看不到树木了。在您的关联答案中,有Style
:
<Style x:Key="DefaultRowStyle" TargetType="{x:Type DataGridRow}">
<Setter Property="ContextMenu" Value="{StaticResource RowMenu}" />
</Style>
您说您无法使用它,因为您有自己想要应用的Style
...但上面的Style
只有一个Setter
,所以没有什么可以阻止您将Setter
复制到Style
:
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="ContextMenu" Value="{StaticResource RowMenu}" /><!--<<<<<<<<-->
<Style.Triggers>
<Trigger Property="AlternationIndex" Value="1">
<Setter Property="Background" Value="#eed3f7" />
</Trigger>
[...]
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
或者,您可以将Style
基于DefaultRowStyle
:
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}" BasedOn="DefaultRowStyle">
<Style.Triggers>
<Trigger Property="AlternationIndex" Value="1">
<Setter Property="Background" Value="#eed3f7" />
</Trigger>
[...]
</Style.Triggers>
</Style>
</DataGrid.RowStyle>