我有一个ListView
每行显示 aCheckBox
和 2TextBlock
的地方。它绑定到ObservableCollection
每个项目都有一个 IsDuplicate 属性的地方。所有数据绑定都有效,当属性为真时,我有一个DataTrigger
将整行变为红色。这样可行。
我的问题是:除了将线变为红色之外,我还想在 IsDuplicate 为真时更改(但只有 CheckBox)的Visibility
属性。CheckBox
以下代码将行变为红色,但CheckBox
Visibility
保持不变。我在 setter 上尝试了 a TargetName
,但我收到一个错误消息,告诉我“无法在 Style Setter 上设置 TargetName 属性”。
当 IsDuplicate 为真时,我怎样才能实现只有CheckBox
Visibility
属性被设置为?Hidden
<ListView ItemsSource="{Binding Tasks}" IsSynchronizedWithCurrentItem="True" SizeChanged="ListViewSizeChanged" Loaded="ListViewLoaded" >
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsDuplicate}" Value="True">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="CheckBox.Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Width="30" >
<GridViewColumn.CellTemplate>
<DataTemplate x:Name="Checker" >
<CheckBox IsChecked="{Binding IsSelected}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="160" Header="File" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding FileName}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="260" Header="URL" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding VideoUrl}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="300" Header="Download URL" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding DownloadUrl}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>