WPF中的文本选择(文本框等)与其他UI工具包的文本选择不同,因为WPF在文本上使用半透明叠加作为其选择矩形。
SystemColors
class提供HighlightColor
property中该矩形所使用的颜色(以及与之相关的其他属性)。但是,该颜色完全不透明。因此,颜色必须用作降低的不透明度。
TextBoxBase.SelectionOpacity
,PasswordBox.SelectionOpacity
和FlowDocumentPageViewer.SelectionOpacity
上的文档页面提示:
默认值为0.4。
另一方面,this blogpost说:
SelectionOpacity (...)默认值为.6。
无论默认值是什么,都有办法从环境中检索与SystemColors.HighlightColor
一起使用的选择不透明度,而不是硬编码任意值(甚至可能不是非标准高光颜色的最佳选择)?
答案 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