WPF:选中一个后,取消选中我的所有复选框

时间:2015-06-10 12:09:06

标签: wpf listview checkbox

这是我的第一个包含ADD的{​​{1}}:

TINYINT(1) NOT NULL;

如何添加选项以仅检查特定ListView row column中的一个CheckBox以及我选择另一个<GridViewColumn Width="40" > <GridViewColumn.CellTemplate> <DataTemplate> <CheckBox Name="cbSelectInterface" IsThreeState="False" ></CheckBox> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> 的内容并检查此控件是否所有其他CheckBox都未选中?

2 个答案:

答案 0 :(得分:1)

将CheckBox的IsChecked属性绑定到ListViewItem的IsSelected属性怎么样?如果SelectionMode设置为Single,那么您将只能选择一行和一个复选框。

<ListView ItemsSource="{Binding Source={StaticResource TestDataSource}}"
          SelectionMode="Single">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="30">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox IsChecked="{Binding IsSelected,
                                              RelativeSource={RelativeSource
                                              AncestorType={x:Type ListViewItem}}}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn DisplayMemberBinding="{Binding}" />
        </GridView>
    </ListView.View>
</ListView>

然后,您可以使用ListView的SelectedItem来知道哪一行是带有选中CheckBox的行。

答案 1 :(得分:0)

在WPF中,没有控件可以自动执行您想要的操作。但是,如果您按照WPF应用程序中的惯例使用数据绑定,那么实现您的需求很简单,或者至少很简单。在这种情况下,您的视图模型或后面的代码将包含一个包含所有数据项的对象(将是绑定到ListView.ItemsSource属性的数据)。

当检查其中一个Checkbox es时,您需要做的就是遍历数据绑定集合中的每个项目,并将其属性绑定到Checkbox到{{1 }}:

false

如果您已经在数据类上实现了foreach (var item in YourDataBoundCollection) { item.PropertyDataBoundToCheckBox = false; } 接口,那么UI将自动更新。

唯一剩下的问题是你怎么知道INotifyPropertyChanged何时被检查过?最简单的“非MVVM”方式是为CheckBox.Checked Event添加处理程序。