首页 文章

ListView ItemContainerStyle模板

提问于
浏览
1

我创建了用作ListView项目模板的样式,其中包含CheckBox和TextBlock:

<Style x:Key="CheckBoxListStyle" TargetType="{x:Type ListView}">
            <Setter Property="SelectionMode" Value="Multiple"></Setter>
            <Setter Property="ItemContainerStyle">
                <Setter.Value>
                    <Style TargetType="{x:Type ListViewItem}" >
                        <Setter Property="Template">
...

模板中的复选框绑定到列表视图项的IsSelected属性:

<CheckBox x:Name="itemCheckBox" Width="13" Height="13" Focusable="False" IsChecked="{Binding Path=IsSelected, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">

并且textblock的文本绑定到列表视图项的源的Value属性:

<TextBlock x:Name="textBlock" Padding="5,0,0,0" HorizontalAlignment="Stretch">
  <ContentPresenter Content="{Binding Path=Value}"/>
</TextBlock>

我列表中的每个项目都是一个包含两个属性的对象, ValueIsChecked . 我想要做的是将我的对象的IsChecked属性绑定到我的列表视图项的IsSelected属性 . 但是,我不知道如何从ListViewItem模板中访问我的对象的IsChecked属性 .

我没有遇到任何问题将文本块的内容绑定到我的对象的Value属性,但如果我希望我的对象的IsChecked属性绑定到列表视图的IsSelected属性,我甚至会放置绑定定义项目?

1 回答

  • 2

    每个ListViewItem的DataContext应该在父ListView创建时设置为项数据,因此您应该能够使用:

    <Style TargetType="{x:Type ListViewItem}" >
        <Setter Property="IsSelected" Value="{Binding IsChecked}">
        ...
    </Style>
    

相关问题