ListView ItemContainerStyle模板

时间:2010-10-28 13:47:18

标签: wpf wpf-controls binding

我创建了用作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}}">

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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