我在WPF应用程序中有一个Datagrid(使用MVVM {Caliburn Micro}),它绑定到类型ObservableCollection<Student>
的属性,其中Student类看起来像这样:
public class Student
{
public int ID { get; set; }
public String FullName { get; set; }
public bool Passed { get; set; }
}
根据事实-学生是否通过了考试-我想将相应学生的行的背景/前景更改为红色(如果未通过)。
下面显示了我的DataGrid:
<DataGrid Grid.Column="1"
RowBackground="White"
Visibility="Visible"
Grid.Row="15"
ColumnWidth="auto"
IsReadOnly="False"
AutoGenerateColumns="False"
BorderBrush="{StaticResource GridBorder}"
VerticalScrollBarVisibility="Auto"
HorizontalGridLinesBrush="LightGray"
HorizontalScrollBarVisibility="Disabled"
VerticalGridLinesBrush="LightGray"
Name="Students"
CanUserAddRows="True"
BorderThickness="0.8"
SelectionUnit="FullRow"
cal:Message.Attach="[Event MouseDoubleClick] = [Action GetRow($dataContext)]"
SelectionMode="Single" Grid.ColumnSpan="4">
这些是“定义”列:
<DataGridTextColumn Binding="{Binding ID}" Header="PersonalNumber"/>
<DataGridTextColumn Binding="{Binding FullName}" Header="FullName"/>
为解决这个问题,我尝试了类似的方法,但是不起作用:
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Passed}" Value="false">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding Passed}" Value="true">
<Setter Property="Background" Value="Black"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
我该怎么办?
答案 0 :(得分:0)
您的DataGrid正在设置RowBackground="White"
,该设置将覆盖RowStyle,请删除该设置,然后Style将按照您期望的方式运行。