我创建了用作 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">
...
模板中的复选框绑定(bind)到 ListView 项的 IsSelected 属性:
<CheckBox x:Name="itemCheckBox" Width="13" Height="13" Focusable="False" IsChecked="{Binding Path=IsSelected, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
文本 block 的文本绑定(bind)到 ListView 项源的 Value 属性:
<TextBlock x:Name="textBlock" Padding="5,0,0,0" HorizontalAlignment="Stretch">
<ContentPresenter Content="{Binding Path=Value}"/>
</TextBlock>
列表中的每一项都是一个对象,包含两个属性:Value 和 IsChecked。我想要做的是将对象的 IsChecked 属性绑定(bind)到 ListView 项的 IsSelected 属性。但是,我不知道如何从 ListViewItem 模板中访问对象的 IsChecked 属性。
将文本 block 的内容绑定(bind)到对象的 Value 属性时没有遇到任何问题,但是如果我希望将对象的 IsChecked 属性绑定(bind)到对象的 IsSelected 属性,我什至可以将绑定(bind)定义放在哪里 ListView 项目?
最佳答案
每个 ListViewItem 的 DataContext 在由父 ListView 创建时应设置为项目数据,以便您应该能够使用:
<Style TargetType="{x:Type ListViewItem}" >
<Setter Property="IsSelected" Value="{Binding IsChecked}">
...
</Style>
关于wpf - ListView ItemContainerStyle 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4043505/