wpf - ListView ItemContainerStyle 模板

标签 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">
...

模板中的复选框绑定(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>

列表中的每一项都是一个对象,包含两个属性:ValueIsChecked。我想要做的是将对象的 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/

相关文章:

asp.net - HTML Help Workshop 仍然是与应用程序一起使用的可行选择吗?

用于自定义声波控制的 WPF Performance 渲染

c# - Interop 字进程不会立即关闭

c# - 有没有更简单的方法来使用未知类型进行类型转换?

c# - WPF - 使用鼠标事件在 Canvas 上绘图

wpf - 如何在自定义控件中创建可绑定(bind)命令?

Angular - 绑定(bind)公共(public)/私有(private)属性

.net - 不使用 Prism 的 WPF 中的松散耦合事件

c# - Canvas 覆盖了里面 TextBlock 的 TextAlignment 值

java - 单击“ TableView ”行时将文本设置为“标签”