wpf:DataGrid DataTrigger无法正常工作

时间:2016-10-31 11:51:31

标签: c# wpf datagrid datatrigger

我有模特课:

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的项目,但背景不会变为红色。我做错了什么?

0 个答案:

没有答案