检索默认选择不透明度

时间:2015-01-01 19:55:56

标签: wpf systemcolors

WPF中的文本选择(文本框等)与其他UI工具包的文本选择不同,因为WPF在文本上使用半透明叠加作为其选择矩形。

SystemColors class提供HighlightColor property中该矩形所使用的颜色(以及与之相关的其他属性)。但是,该颜色完全不透明。因此,颜色必须用作降低的不透明度。

TextBoxBase.SelectionOpacityPasswordBox.SelectionOpacityFlowDocumentPageViewer.SelectionOpacity上的文档页面提示:

  

默认值为0.4。

另一方面,this blogpost说:

  

SelectionOpacity (...)默认值为.6。

无论默认值是什么,都有办法从环境中检索与SystemColors.HighlightColor一起使用的选择不透明度,而不是硬编码任意值(甚至可能不是非标准高光颜色的最佳选择)?

1 个答案:

答案 0 :(得分:1)

不,是的..没有SystemColors.HighlightOpacity - 但应该有。

WPF中SelectionOpacity默认属性值硬编码为0.4:http://referencesource.microsoft.com/#PresentationFramework/Framework/System/Windows/Controls/Primitives/TextBoxBase.cs,9716201433499854

我不知道这有什么不同(如你所说的那样),它似乎在每个支持它的.NET中被硬编码为0.4(4.0,4.5)。

如果您想实际查询SelectionOpacityProperty的默认值,可以这样做:

var prop = TextBoxBase.SelectionOpacityProperty;
var defValue = (double) prop.DefaultMetadata.DefaultValue; // 0.4