我有一個ListView在網格模式下顯示數據列表。網格工作,但我無法綁定背景屬性。如果「FileExists == false」,那麼我想以紅色顯示該行。爲什麼這不起作用?WPF設置ListViewItem.Background綁定
該列表在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,然後放下另一個Style。 – Clemens 2014-09-01 20:40:06
你有2種風格的ItemContainerStyle,1在你的資源中,你不是我們的,它看起來就像是你想要着色的那種, ,另一個集合就像itemsContainerStyle,它看起來好像什麼都不做,那麼究竟是什麼ru試圖做什麼? – 2014-09-01 20:42:50