首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.net 4.5: DataGrid -前景颜色行为更改

问.net 4.5: DataGrid -前景颜色行为更改
EN

Stack Overflow用户
提问于 2012-11-16 11:55:27
回答 2查看 871关注 0票数 1

我有一个c#业务应用程序(仍然以.net 4.0为目标)。安装.net 4.5后,数据行的非活动前景颜色发生了更改。(我没有重新编译,仍然在执行相同的二进制文件)

似乎他们改变了前景色的对比颜色计算。

更多的细节。Datagrid的定义是这样的:

代码语言:javascript
复制
<DataGrid Background="White" AlternatingRowBackground="WhiteSmoke" ... />

我们还通过这种方式为Datagrid定义了一种全局样式:

代码语言:javascript
复制
<Style TargetType="{x:Type DataGrid}">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="{DynamicResource ItemSelectedFocusedColor}"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{DynamicResource ItemSelectedFocusedColor}"/>
    </Style.Resources>
</Style>

颜色:<Color x:Key="ItemSelectedFocusedColor">#88087ED1</Color>

在执行安装了.net 4的应用程序时,非焦点数据行的前景色是White。在安装了.net 4.5的应用程序时,非焦点数据行的前景文本颜色是黑。

如果数据集具有焦点,则行为是相同的。(两种版本均为白色)

对我来说,这对于一个就地更新来说是一个巨大的改变。我的所有客户端都应该获得完全相同的用户体验,而不是安装的版本。

我在MSDN .net 4.5应用程序兼容性上也找不到关于这个问题的任何信息。

EN

回答 2

Stack Overflow用户

发布于 2012-11-16 12:15:43

DataGrid和DataGridRow控件模板已在.NET4.0和.NET4.5版本之间进行了更改。根据选择和焦点改变颜色的触发器不再使用相同的SystemColors。

这就是为什么在xaml中重写SystemColors以更改选择颜色,即使是一个很好的技巧,也不是一个好做法。

您应该重写控件模板/样式,使它们与您自己的画笔一起工作。这样,即使微软决定改变他们的内置模板,你的代码也不会受到影响。

票数 2
EN

Stack Overflow用户

发布于 2013-07-18 23:19:53

你可以按照@Sisyphe的建议去做,也可以继续“作弊”!我们必须将其添加到Style.Resources列表中才能修复相同的问题。

代码语言:javascript
复制
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>

请参阅https://stackoverflow.com/a/13053511/1811110

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

https://stackoverflow.com/questions/13416117

复制
相关文章

相似问题

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