我有ListView
,其中每行显示CheckBox
和2 TextBlock
s。
它绑定到ObservableCollection
,其中每个项都有一个IsDuplicate属性。
所有数据绑定都有效,我有一个DataTrigger
,当属性为true时,整行变成红色。这很有效。
我的问题是:
除了将行变为红色之外,我还想在IsDuplicate为真时更改Visibility
(但仅限CheckBox)的CheckBox
属性。
以下代码将该行变为红色,但CheckBox
Visibility
保持不变。
我在setter上尝试了TargetName
,但是我收到错误告诉我“无法在样式设置器上设置TargetName属性。”
当IsDuplicate为true时,如何才能实现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>
答案 0 :(得分:2)
使用以下内容替换DataTemplate
的{{1}}。这应该是诀窍:
CheckBox