我创建了用作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属性,我甚至会放置绑定定义列表视图项?
答案 0 :(得分:2)
每个ListViewItem的DataContext应该在父ListView创建时设置为项数据,因此您应该能够使用:
<Style TargetType="{x:Type ListViewItem}" >
<Setter Property="IsSelected" Value="{Binding IsChecked}">
...
</Style>