【发布时间】:2012-11-28 10:42:25
【问题描述】:
我遇到了一件相当奇怪的事情,我在 WPF XMAL 页面中定义了一个 DataGrid,并声明了以下内容:
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#FF3399FF" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#FF3399FF"/>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="White" />
</DataGrid.Resources>
从技术上讲,这两个 Inactive SystemColors 类型来自 .net 4.5,但是当它设置为目标 .net 4 时我可以编译程序,并且这些非活动画笔可以工作,但是当它设置为目标 .net 4 加载时Visual Studio 中的 XMAL 设计器页面会引发错误 The member "InactiveSelectionHighlightTextBrushKey" is not recognized or is not accessible.,然后阻止设计器视图。但它仍然按照上面程序中定义的方式编译和显示。
至少可以说这似乎非常不一致,我无法判断这是 Visual Studio 2012 的问题,还是它允许程序编译,因为我的开发计算机安装了 .net 4.5 并且它只是在更改目标框架时它看到有东西在使用它(尽管我非常怀疑)。或者是否有可能 Inactive 类型在 .net 4 中但未在文档中列为受支持,而只是在 VS 中导致此问题?
在 .net 4 中是否有更好的方法来允许我设置 DataGrid 行的非活动选择颜色?或者是升级到 .net 4.5 的唯一方法?
【问题讨论】:
-
在没有安装 4.5 的机器上运行程序会发生什么?
-
我希望我能测试一下,但周围没有没有 4.5 的电脑。
-
@Nzc - 该应用程序无法在没有 4.5 的机器上运行(只是在我的一个应用程序中随机遇到了这个问题,并在尝试找到解决方案时遇到了这个 SO 问题)。
-
@Scott:好吧,碰巧我们上周遇到了类似的 4.0/4.5 问题。在我们的例子中,一个线程错误。我们通过在安装程序中强制安装 4.5 来“修复”它。显然,4.5 中的更改在使用 4.0 运行时会中断,但显然没有检查 4.5 是否正在安装。
-
我刚刚在 VS2010 中遇到了这个问题,其中使用 InactiveSelectionHighlightBrushKey 纯色画笔的 DataGrid 可以成功编译,但在执行时会崩溃。按照 Nzc 的建议,通过安装 .Net v4.5 来“修复”它(+1 他的评论)
标签: .net wpf xaml datagrid visual-studio-2012