根据背景更改TextBlock前景色

时间:2011-09-26 12:33:21

标签: wpf colors textblock foreground

我正在寻找一种简单的方法来根据其背后的颜色更改TextBlock的前景色,以便它更具可读性。由于图像比文字更明确,这就是我想要的:

我认为可以使用自定义着色器效果完成,但我不知道如何创建它...无论如何,也许有一个更简单的解决方案。

欢迎任何想法!

3 个答案:

答案 0 :(得分:3)

假设上面是进度条,这是一个很好的解决方案:

WPF progress bar with dynamic text & text color update

答案 1 :(得分:0)

快速而肮脏的方法:

添加白色和灰色文本块,确保白色文本块位于灰色文本块的“顶部”。将白色文本块的文本绑定到灰色文本块的文本,因此它们保持不变。

为白色文本块添加不透明蒙版,其位置和/或大小(或任何所需的!)绑定到绿色矩形的位置和/或大小(不确定是否是模板化的ProgressBar或自定义控制,但无论哪种方式都可以做到。)

然后,这将使绿色条上的文本效果为白色。

答案 2 :(得分:0)

您可以编写Valueconverter(实现IValueConverter)并将BackgroundColor作为转换器参数传递。根据您将Textblock的forground转换为所需值的参数。