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