1

我有一个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>

4

1 回答 1

2

将您的DataTemplatefor替换为CheckBox以下内容。这应该够了吧:

<DataTemplate>
    <CheckBox IsChecked="{Binding IsSelected}" >
        <CheckBox.Style>
            <Style TargetType="CheckBox">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsDuplicate}" Value="True">
                        <Setter Property="Visibility" Value="Hidden" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </CheckBox.Style>
    </CheckBox>
</DataTemplate>
于 2013-06-14T05:20:56.963 回答