我目前正在设计应用程序(WPF),并且试图更改IsSelectedDatagridRow设计。

XAML:

<Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}">
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
             <Setter Property="Foreground" Value="{StaticResource ForegroundSelectedRow}"/>
             <Setter Property="Background" Value="{StaticResource BackgroundSelectedRow}"/>
        </Trigger>
    </Style.Triggers>
</Style>


当我专注于应用程序时,此代码有效,但是当我用DataGrid单击视图之外时,我失去了前景(它采用了另一种颜色),但是背景仍然保持不变...

我不明白只有一个可以工作,但另一个却不行。有人知道为什么吗?

编辑1:

我没有任何DataGrid.Resources。我在App.xaml中设置了所有样式:

<Style x:Key="DataGridStyle" TargetType="DataGrid" BasedOn="{StaticResource {x:Type DataGrid}}">
    <Setter Property="AlternationCount" Value="2"/>
    <Setter Property="AutoGenerateColumns" Value="False"/>
    <Setter Property="IsReadOnly" Value="True"/>
    <Setter Property="CanUserSortColumns" Value="True"/>
    <Setter Property="CanUserAddRows" Value="False"/>
</Style>


然后将其绑定到我的DataGrid

<DataGrid ItemsSource="{Binding Collects}" Style="{StaticResource DataGridStyle}" ColumnHeaderStyle="{StaticResource DGHeaderMargin}"/>

最佳答案

您可以将TargedType更改为DataGridCell代替DataGridRow(WPF 4.0)

<DataGrid.Resources>
 <Style TargetType="{x:Type dg:DataGridCell}">
    <Style.Triggers>
        <Trigger Property="dg:DataGridCell.IsSelected" Value="True">
            <Setter Property="Foreground" Value="{StaticResource ForegroundSelectedRow}"/>
            <Setter Property="Background" Value="{StaticResource BackgroundSelectedRow}"/>
        </Trigger>
    </Style.Triggers>
</Style>




解决方案2

    <DataGrid.Resources>
        <Style TargetType="DataGridRow">
            <Style.Resources>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/>
            </Style.Resources>
        </Style>
   </DataGrid.Resources>

关于c# - DatagridRow IsSelected不能完全正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41139975/

10-12 22:34