【发布时间】:2016-11-10 20:54:01
【问题描述】:
我有一个样式化的窗口,我想将一个数据网格样式覆盖到我的应用程序中的所有数据网格
<Window.Resources>
<Style x:Name="dtgStyle" TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Transparent" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Blue" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Background" Value="Transparent" />
</Trigger>
</Style.Triggers>
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="White" />
</Style>
</Window.Resources>
我认为这必须有效,但我必须申请
Style s = Resources["dtgStyle"] as Style;
mydtg.Style = s;
现在我不想将其应用于所有 dtgs。 最好是在 xaml 中自动应用它。
感谢
---为ASh添加----
感谢您的帮助。唯一的问题是,当数据网格失去焦点时,数据网格中的选定行会改变颜色,如下图所示(前景变为黑色)。
我尝试添加各种属性,但没有任何效果。
此外,左边框变得更粗(不是双关语)和更大。 知道如何解决吗? 谢谢
【问题讨论】:
-
TargetType="{x:Type DataGridRow}"。它是 DataGridRow 样式,而不是 DataGrid。它应该默认应用,因为没有显式键 -
Thanx 所以我将 DatagridRow 名称更改为 dtrStyle 并添加了 但是现在如何添加合适的样式呢?
-
@Patrick 你设置
TargetType="{x:Type DataGridRow}"的方式,你可以设置为DataGrid。有什么大不了的?你想达到什么目标?