У меня есть ListView в режиме сетки, в котором я отображаю список данных. Сетка работает, но я не могу связать свойство Background. Если «FileExists == false», то я хочу отобразить строку красным цветом. Почему это не работает?WPF Set ListViewItem.Background With Binding
Список загружается в Windows.Loaded. Я также добавил атрибут [ImplementPropertyChanged] в класс данных (используя NuGet PropertyChanged.Fody), но это не помогло.
<ListView x:Name="VideosView" TabIndex="2" SelectedValuePath="VideoId" Margin="10,50,10,37" ButtonBase.Click="VideosView_ColumnHeaderClick">
<ListView.Resources>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding FileExists}" Value="False">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Artist, Mode=OneWay}" Header="Artist" Width="100"/>
<GridViewColumn DisplayMemberBinding="{Binding Title, Mode=OneWay}" Header="Title" Width="300"/>
<GridViewColumn DisplayMemberBinding="{Binding Length, Converter={StaticResource TimeSpanConverter}, Mode=OneWay}" Header="Length" Width="40"/>
</GridView>
</ListView.View>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<EventSetter Event="Control.MouseDoubleClick" Handler="VideosView_ItemDoubleClick"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
класс данных
[ImplementPropertyChanged]
public class VideoListItem {
public VideoListItem() {
}
public int VideoId { get; set; }
public string Artist { get; set; }
public string Title { get; set; }
public string FileName { get; set; }
public int? Length { get; set; }
public bool FileExists { get; set; }
public bool IsInDatabase { get; set; }
}
Почему у вас есть два ListViewItem стилей, один стиль по умолчанию в ListView в ресурсах, а еще один набор, как ItemContainerStyle? Просто переместите DataTrigger в ItemContainerStyle и оставьте другой стиль. – Clemens
у вас есть 2 стиля для ItemContainerStyle, 1 в ваших ресурсах, которые вы не нам, и кажется, что это тот, который вы не хотите окрашивать, и еще один набор как itemsContainerStyle, который кажется, что он ничего не делает, так что конкретно ru пытаясь сделать? –