首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DatagridRow IsSelected不完全工作

DatagridRow IsSelected不完全工作
EN

Stack Overflow用户
提问于 2016-12-14 10:13:51
回答 2查看 1.1K关注 0票数 2

我目前正在设计我的应用程序(WPF),我正在尝试更改IsSelected of DatagridRow的设计。

XAML:

代码语言:javascript
复制
<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中设置了以下所有样式:

代码语言:javascript
复制
<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上

代码语言:javascript
复制
<DataGrid ItemsSource="{Binding Collects}" Style="{StaticResource DataGridStyle}" ColumnHeaderStyle="{StaticResource DGHeaderMargin}"/>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-14 10:39:26

您可以将TargedType改为DataGridCell DataGridRow (WPF4.0)

代码语言:javascript
复制
<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

代码语言:javascript
复制
    <DataGrid.Resources> 
        <Style TargetType="DataGridRow"> 
            <Style.Resources> 
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/>                                  
            </Style.Resources> 
        </Style> 
   </DataGrid.Resources> 
票数 2
EN

Stack Overflow用户

发布于 2016-12-14 10:48:10

多亏了Wi Wiśnicki先生,我发现了!

如果您想要有一个正确的设计,您必须在DataGridRowDataGridCell上应用样式,如下所示:

代码语言:javascript
复制
        <Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Foreground" Value="{StaticResource ForegroundSelectedRow}"/>
                </Trigger>
            </Style.Triggers>
        </Style>

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

我希望它能帮助其他一些开发人员:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41139975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档