我有模特课:
public class ImportModel
{
public bool Selected { get; set; }
public bool IsValid{ get; set; }
public bool IsMigrated{ get; set; }
}
在我的MainWindow.xaml.cs
:
在Initialize
方法中:
this.Models = new List<ImportItemModel>();
this.CardsGrid.DataContext = this;
在按钮点击事件中:
this.Models.Clear();
var parsedItems = parseTask.Result;
var distinctItems = parsedItems.Where(i => i.IsValid == true).Distinct().ToList();
if (parsedItems.Count(i => i.IsValid) != distinctItems.Count)
{
MessageBox.Show(Properties.Resources.FileContainsDuplicatesError, Properties.Resources.WarningDialogTitle, MessageBoxButton.OK, MessageBoxImage.Warning);
}
distinctItems.AddRange(parsedItems.Where(p => p.IsValid == false));
this.Models.AddRange(distinctItems);
this.MyGrid.Visibility = this.Models.Count > 0 ? Visibility.Visible : Visibility.Hidden;
this.MyGrid.Items.Refresh();
并在xaml文件中:
<DataGrid x:Name="MyGrid" HorizontalAlignment="Left" Margin="0,0,0,0" Grid.Row="6" VerticalAlignment="Top" Grid.Column="0" Grid.ColumnSpan="2" Visibility="Hidden" ItemsSource="{Binding Models}" AutoGenerateColumns="False" Width="550" MinWidth="500">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding IsValid}" Value="false">
<Setter Property="Background" Value="Red"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding IsMigrated}" Value="true">
<Setter Property="Background" Value="Green"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding IsMigrated}" Value="false">
<Setter Property="Background" Value="White"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
...
并在Model
列表中填充IsValid
值为false的项目,但背景不会变为红色。我做错了什么?