C# XAML中不同属性的WPF DataGrid单元格样式
是否可以将数据网格列值绑定到ItemsSource中指定的绑定类的一个属性,但引用该类中的其他属性来设置单元格样式 下面是一个代码示例:C# XAML中不同属性的WPF DataGrid单元格样式,c#,wpf,xaml,C#,Wpf,Xaml,是否可以将数据网格列值绑定到ItemsSource中指定的绑定类的一个属性,但引用该类中的其他属性来设置单元格样式 下面是一个代码示例: <DataGrid ItemsSource="MyCollection"> <DataGridTextColumn Header="MyColumn" Binding={Binding ColumnText} /> <DataGridTextColumn Header="MyColumn2" Binding={Bindin
<DataGrid ItemsSource="MyCollection">
<DataGridTextColumn Header="MyColumn" Binding={Binding ColumnText} />
<DataGridTextColumn Header="MyColumn2" Binding={Binding ColumnText2} />
</DataGrid>
假设我在MyCollection中的对象中还有两个属性(枚举或画笔),我想引用它们来设置相应单元格的背景颜色;这能做到吗
编辑-我需要对多个列执行此操作,每个列查看不同的属性,以确定它应该是什么颜色;我在上面的代码示例中添加了第二列
我知道我可以根据ColumnText中的值设置样式,但这不是我需要做的
我已经尝试设置样式数据触发器,但是当我尝试绑定时,我只能绑定到整个数据上下文中的某个内容,而不能绑定到填充当前行的对象中的另一个属性
非常感谢 如果我理解正确,您正试图通过行模型中的属性设置单元格背景 可以通过设置单元格样式来实现这一点,并将DataTrigger设置为该样式以绑定到所需的属性
例子 您希望将编号为3的每个单元格绘制为绿色:
<DataGrid ItemsSource="{Binding Rows}" AutoGenerateColumns="True">
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<DataTrigger Binding="{Binding Number}" Value="3">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="Green"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
当然,您可以使用自己的属性和感兴趣的值更改Number属性
如果你想做一些更复杂的事情,比如值的范围等等,你应该用传统的方法
编辑 如果要为每列创建不同的单元格样式,应显式设置列:
<DataGrid ItemsSource="{Binding Rows}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Number}">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<DataTrigger Binding="{Binding Number}" Value="3">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="Green"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
但有一件重要的事情需要注意
您必须设置AutoGenerateColumns=“False”,否则将生成两次列。感谢您的回复!我意识到我的问题还不清楚,我需要在多个列中执行此操作,每个列引用不同的属性来设置其颜色。我尝试了您的示例,在数据触发器中,我无法绑定到该行的属性,仅适用于外部数据上下文对象的属性。我已将答案添加为显式列感谢更新!不过,我得到了和以前一样的问题。在DataTrigger中,我只能绑定到外部数据上下文的属性(在整个XAML中都可用的viewmodel),而不能绑定到行的另一个属性。但别担心,我认为这是VisualStudio的一个bug或者类似的东西。请随意输入您的财产名称,编译,然后让神奇的事情发生。:)