如何在XAML.cs文件中设置TextBlock的背景颜色?
问题:如何在XAML.cs中设置Brush类型的背景绑定值?
场景重现
XAML代码
<TextBlock Text="{Binding Info40}" HorizontalAlignment="Center" Background="{Binding Info40_OK}">
正常运行的后台赋值代码
Info40 = source.Info40;
遇到的问题
尝试通过以下代码设置背景颜色时失败:
if (Info40 >= 20) Info40_OK = Colors.DarkGreen else { Info40_OK = Colors.Red; }
原因是Info40_OK是Brush类型,而Colors.DarkGreen是Color类型,二者类型不匹配。但在XAML中直接写Background="DarkGreen"能正常工作,是因为XAML会自动将颜色字符串转换为对应的Brush对象。
解决方案
需要把Color对象包装成SolidColorBrush对象(Background属性接受Brush类型,SolidColorBrush是最常用的纯色Brush实现),修改后的代码如下:
if (Info40 >= 20) Info40_OK = new SolidColorBrush(Colors.DarkGreen); else Info40_OK = new SolidColorBrush(Colors.Red);
如果想避免重复创建实例、提升效率,也可以直接使用系统内置的预定义Brush实例:
if (Info40 >= 20) Info40_OK = Brushes.DarkGreen; else Info40_OK = Brushes.Red;
Brushes类(位于System.Windows.Media命名空间)提供了各类常用颜色的SolidColorBrush实例,直接调用即可。
内容的提问来源于stack exchange,提问作者Dominique
相关产品推荐
相关产品推荐

