問題
使用的樣式:
DataGridRowDataGridCell
我可以使突出顯示或單元格填充起作用,但不能同時使用。我嘗試了許多不同的方法(例如,資源與特定的 DataGrid 樣式),但沒有任何效果并且允許提出問題。
<UserControl.Resources>
<!-- DataGridRow style -->
<Style x:Key="MyRowStyle" TargetType="{x:Type DataGridRow}">
<Style.Resources>
<SolidColorBrush
x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#E5BE47" />
<SolidColorBrush
x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Blue" />
</Style.Resources>
</Style>
<!-- DataGridCell style -->
<Style x:Key="MyCellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border x:Name="border" Padding="15,10,10,15">
<ContentPresenter/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid>
<!-- BOTH styles are used, which illustrates the problem: -->
<DataGrid x:Name="Connections" AutoGenerateColumns="False"
RowStyle="{StaticResource MyRowStyle}"
CellStyle="{StaticResource MyCellStyle}">
<DataGrid.Columns>
<DataGridTextColumn Header="Process Id"/>
<DataGridTextColumn Header="Name"/>
<DataGridTextColumn Header="Application"/>
<DataGridTextColumn Header="Directory" Width="*"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
前景將正確更改為“紅色”,但背景保持白色(而不是#E5BE47 定義的黃色)。似乎由于某種原因,HighlightBrushKey 被完全忽略了,我不明白何時DataGridCell還使用了該樣式。
這是一個AND問題,而不是OR問題。如何在 DataGrid 中同時使用這兩種樣式?另外,樣式有效。問題是兩者的結合......兩者都不會一起作業 - 為什么以及如何解決?
左輸出,右輸出:

如果DataGridCell洗掉了樣式,則熒光筆的背景顏色可以正常作業……但這不是解決方案,因為它洗掉了所需的填充。
uj5u.com熱心網友回復:
有用
<Style x:Key="MyRowStyle" TargetType="{x:Type DataGridRow}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Blue" />
</Style.Resources>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#E5BE47 />
</Trigger>
</Style.Triggers>
</Style>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/334480.html
