C# 如何改变前景的颜色

C# 如何改变前景的颜色,c#,uwp,datagrid,datagridcomboboxcolumn,C#,Uwp,Datagrid,Datagridcomboboxcolumn,请帮帮我。 我有带有ComboBoxColumn的DataGrid,我必须更改前景文本 例如: -如果ComboBoxColumn的值为“IT”,则前景必须为“红色” -如果ComboBoxColumn的值为“R&D”,则前景必须为“黄色” -如果ComboBoxColumn具有值“Finance”,则前景必须为“黑色” 代码隐藏 namespace DataGridComboBoxColumnColor { public class Department {

请帮帮我。 我有带有ComboBoxColumn的DataGrid,我必须更改前景文本

例如: -如果ComboBoxColumn的值为“IT”,则前景必须为“红色” -如果ComboBoxColumn的值为“R&D”,则前景必须为“黄色” -如果ComboBoxColumn具有值“Finance”,则前景必须为“黑色”


代码隐藏

namespace DataGridComboBoxColumnColor
{
    public class Department
    {
        public int DepartmentId {
            get;
            set;
        }
        public string DepartmentName {
            get;
            set;
        }
    }

    public class Person
    {
        public int PersonId {
            get;
            set;
        }
        public int DepartmentId {
            get;
            set;
        }
        public string FirstName {
            get;
            set;
        }
        public string LastName {
            get;
            set;
        }
        public string Position {
            get;
            set;
        }
    }

    public sealed partial class MainPage : Page
    {
        public List<Department> Departments {
            get;
            set;
        }
        public List<Person> Persons {
            get;
            set;
        }
        public MainPage()
        {
            this.InitializeComponent();
            Departments = new List<Department>
            {
                new Department {
                    DepartmentId = 1, DepartmentName = "R&D"
                }
                ,
                new Department {
                    DepartmentId = 2, DepartmentName = "Finance"
                }
                ,
                new Department {
                    DepartmentId = 3, DepartmentName = "IT"
                }
            };
            Persons = new List<Person>
            {
                new Person
                {
                    PersonId = 1, DepartmentId = 3, FirstName = "Ronald", LastName = "Rumple",
                    Position = "Network Administrator"
                }
                ,
                new Person
                {
                    PersonId = 2, DepartmentId = 1, FirstName = "Brett", LastName = "Banner",
                    Position = "Software Developer"
                }
                ,
                new Person
                {
                    PersonId = 3, DepartmentId = 2, FirstName = "Alice", LastName = "Anderson",
                    Position = "Accountant"
                }
            };
        }
    }

}
名称空间DataGridComboxColumnColor
{
公共课系
{
公共int部门ID{
得到;
设置
}
公共字符串DepartmentName{
得到;
设置
}
}
公共阶层人士
{
公共int人格{
得到;
设置
}
公共int部门ID{
得到;
设置
}
公共字符串名{
得到;
设置
}
公共字符串姓氏{
得到;
设置
}
公共字符串位置{
得到;
设置
}
}
公共密封部分类主页面:第页
{
公开名单部门{
得到;
设置
}
公开名单人员{
得到;
设置
}
公共主页()
{
this.InitializeComponent();
部门=新列表
{
新部门{
部门ID=1,部门名称=“研发”
}
,
新部门{
DepartmentId=2,DepartmentName=“财务”
}
,
新部门{
DepartmentId=3,DepartmentName=“IT”
}
};
人员=新名单
{
新人
{
PersonId=1,部门ID=3,FirstName=“Ronald”,LastName=“Rumple”,
Position=“网络管理员”
}
,
新人
{
PersonId=2,部门ID=1,FirstName=“Brett”,LastName=“Banner”,
Position=“软件开发人员”
}
,
新人
{
PersonId=3,部门ID=2,FirstName=“Alice”,LastName=“Anderson”,
职位=“会计”
}
};
}
}
}
如何改变前景的颜色

根据您的需求,更好的方法是使用
IValueConverter
重新调谐匹配的前景。不幸的是,
DataGridTextColumn
的前台属性不是
dependencProperty
,因此我们不能直接使用转换器。我们可以使用
DataGridTemplateColumn
创建自定义单元格,并在
CellTemplate
中添加一个文本块,然后将前景与源绑定,如下所示

转换器

public class ColorValueConverter : IValueConverter
 {
     //IT" foreground must be "Red" - If ComboBoxColumn have value "R&D" foreground must be "Yellow"

     public object Convert(object value, Type targetType, object parameter, string language)
     {
         var solorbrush = new SolidColorBrush();
         switch (value.ToString())
         {
             case "IT":
                 solorbrush.Color = Colors.Red;
                 break;
             case "R&D":
                 solorbrush.Color = Colors.Yellow;
                 break;
             case "Finance":
                 solorbrush.Color = Colors.Black;
                 break;

             default:
                 solorbrush.Color = Colors.LightBlue;
                 break;

         }
         return solorbrush;
     }


  public object ConvertBack(object value, Type targetType, object parameter, string language)
     {
         throw new NotImplementedException();
     }
 }
用法

<Page.Resources>    
    <local:ColorValueConverter x:Key="ColorCoverter"/>
</Page.Resources>


<controls:DataGridTemplateColumn Header="ID">
    <controls:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Id}" Foreground="{Binding Id, Converter={StaticResource ColorCoverter}}"/>
        </DataTemplate>
    </controls:DataGridTemplateColumn.CellTemplate>

</controls:DataGridTemplateColumn>

大家好,欢迎来到StackOverflow!请回答您的问题,以澄清您的具体问题,或添加其他详细信息,以突出显示您所需的内容。阅读
<Page.Resources>    
    <local:ColorValueConverter x:Key="ColorCoverter"/>
</Page.Resources>


<controls:DataGridTemplateColumn Header="ID">
    <controls:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Id}" Foreground="{Binding Id, Converter={StaticResource ColorCoverter}}"/>
        </DataTemplate>
    </controls:DataGridTemplateColumn.CellTemplate>

</controls:DataGridTemplateColumn>