我有一个c#业务应用程序(仍然以.net 4.0为目标)。安装.net 4.5后,数据行的非活动前景颜色发生了更改。(我没有重新编译,仍然在执行相同的二进制文件)
似乎他们改变了前景色的对比颜色计算。
更多的细节。Datagrid的定义是这样的:
<DataGrid Background="White" AlternatingRowBackground="WhiteSmoke" ... />我们还通过这种方式为Datagrid定义了一种全局样式:
<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应用程序兼容性上也找不到关于这个问题的任何信息。
发布于 2012-11-16 12:15:43
DataGrid和DataGridRow控件模板已在.NET4.0和.NET4.5版本之间进行了更改。根据选择和焦点改变颜色的触发器不再使用相同的SystemColors。
这就是为什么在xaml中重写SystemColors以更改选择颜色,即使是一个很好的技巧,也不是一个好做法。
您应该重写控件模板/样式,使它们与您自己的画笔一起工作。这样,即使微软决定改变他们的内置模板,你的代码也不会受到影响。
发布于 2013-07-18 23:19:53
你可以按照@Sisyphe的建议去做,也可以继续“作弊”!我们必须将其添加到Style.Resources列表中才能修复相同的问题。
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>https://stackoverflow.com/questions/13416117
复制相似问题