c# - 使用上下文菜单时如何更改datagrid WPF C#中选定行的字体颜色
问题描述
我正在使用 Mahapps.Metro 库开发 WPF 应用程序。
有一个 DataGrid,我想在添加的行上使用 ContextMenu,因为我在 datagrid 资源中定义它
<DataGrid.Resources>
<ContextMenu x:Key="RowMenu"
DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}">
<MenuItem Header="Borrar detalle" Click="delete_Click" />
<MenuItem Header="Editar detalle" Click="edit_Click" />
</ContextMenu>
</DataGrid.Resources>
并在行样式中添加该上下文菜单
<DataGrid.RowStyle>
<Style TargetType="DataGridRow" >
<Setter Property="ContextMenu" Value="{StaticResource RowMenu}" />
</Style>
</DataGrid.RowStyle>
这样做的问题是,当用户单击该行时,它似乎消失了(字体颜色变为白色)。我尝试将以下内容添加到行样式中,但似乎不起作用。
<DataGrid.RowStyle>
<Style TargetType="DataGridRow" >
<Setter Property="ContextMenu" Value="{StaticResource RowMenu}" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="LightSkyBlue"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Background" Value="LightSkyBlue"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Background" Value="Transparent"/>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Background" Value="Transparent"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
我的最后一个选择是使用网格中的上下文菜单而不是行,但我想知道是否有什么我可以做的事情来完成这项工作。希望你能帮忙,谢谢。
解决方案
您应该在定义的样式上使用基于功能:
<DataGrid.RowStyle>
<Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}">
<Setter Property="ContextMenu" Value="{StaticResource RowMenu}" />
</Style>
</DataGrid.RowStyle>
推荐阅读
- c++ - 第一次输入后字符串输入被忽略
- python - 当大小不同时,如何根据预测值绘制图形真实值?
- angular - 无法在primeng的日历时间戳上调用toDate()
- python - Selenium WebDriver find_element_by_xpath 不适用于文本
- git - 在提交中恢复对子模块的更改
- ruby-on-rails - Rails 6 - 如何使用 webpacker 引用图像文件夹?
- html - CSS Grid 中的重复功能有什么好处?
- python - python有没有办法记住脚本中执行的最后一个函数,然后再次调用它?
- python - 如何使用 asyncpg (python) 在 postgresql 表中插入具有 ManyToMany 关系的列?
- node.js - Node.js Facebook Messenger 聊天机器人 - 未定义发件人 PSID