【问题标题】:How to add a checkbox column to a ListView in WPF and get the state of it如何将复选框列添加到 WPF 中的 ListView 并获取它的状态
【发布时间】:2016-02-18 18:41:20
【问题描述】:

我有一个列表视图,其中 ItemsSource 设置为像这样的 linq 查询的结果

listViewPlan.ItemsSource = new ObservableEvents(query);

结果的值绑定到 listView 的列。 现在我想添加另一个包含复选框的列,以便用户可以选择列表视图中的一些项目。所以我添加了这个

            <GridViewColumn DisplayMemberBinding="{Binding select}">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox Tag="select"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
                <GridViewColumnHeader Click="SortClick" Tag="select" Content="" />
            </GridViewColumn>

这会在列表视图中添加一个复选框列。但它不受 linq 结果的任何约束。所以我无法使用 listViewPlan.Items[i] 访问 Checkbox 的当前状态。我也不想从数据库中向数据类型添加布尔值,因为单个用户的复选框状态不应存储在全局任何地方。我可以创建另一个类似于 linq 类的类,并为 Checkbox 添加了一个布尔值。但后来我不得不来回复制所有成员变量。我该怎么做?

【问题讨论】:

  • 您可以在 ViewModel 上包装您的对象,在 ViewModel 上公开您的“数据库”对象以使用绑定并创建 Bool 属性以与 Checkbox 绑定

标签: c# wpf linq listview checkbox


【解决方案1】:

您可以在列表框中使用多选模式并将 CheckBox.IsChecked 绑定到 ListViewItem.IsSelected。

<DataTemplate x:Key="ListBoxItemTemplate">
    <CheckBox IsChecked="{Binding Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, 
                                                      AncestorType={x:Type ListViewItem}}, Path=IsSelected}" />
</DataTemplate>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多