【问题标题】:Check/Uncheck checkboxes in wpf mvvm [duplicate]选中/取消选中 wpf mvvm 中的复选框 [重复]
【发布时间】:2020-04-29 15:00:31
【问题描述】:

这是我的要求:

  1. 当标题复选框被选中时,该列中的所有复选框都将被选中。当标题复选框未选中时,所有 该列中的复选框将被取消选中。

  2. 当列中的所有复选框都被选中时,取消选中其中一个将取消选中标题复选框。当一一检查复选框时 在该列中,将选中标题复选框。

我如何做到这一点?

这是我的 xaml:

<DataGridTemplateColumn>
    <DataGridTemplateColumn.Header>
        <CheckBox x:Name="chbHeader" IsChecked={"Binding AllChecked"} />
    </DataGridTemplateColumn.Header>

    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding IsChecked, ElementName=chbHeader}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

【问题讨论】:

标签: wpf mvvm


【解决方案1】:

我搞定了。

<DataGridTemplateColumn>
    <DataGridTemplateColumn.Header>
        <CheckBox IsChecked="{Binding DataContext.AllSelected, RelativeSource={RelativeSource AncestorType=DataGrid}}"
                  Command="{Binding DataContext.CmdSetChildCheckboxes, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
    </DataGridTemplateColumn.Header>

    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding DataContext.IsSelected, RelativeSource={RelativeSource AncestorType=DataGrid}}"
                      Command="{Binding DataContext.CmdSetHeaderCheckbox, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

在 C# 代码中,具有 IsChecked/AllChecked 属性和相应实现的命令。

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 2013-01-24
    • 2018-02-03
    相关资源
    最近更新 更多