【问题标题】:How to bind CheckBox IsChecked to ListBox of CheckBoxes如何将 CheckBox IsChecked 绑定到 CheckBox 的 ListBox
【发布时间】:2017-03-23 01:17:13
【问题描述】:

我有一个复选框列表和一个复选框,该复选框充当列表框中所有项目的 CheckAll/UncheckAll。

如果列表框绑定中的所有项目都被选中,我怎样才能使 chkAll 复选框被选中?

我可以在视图模型中创建一个属性来实现这一点。我想在 xaml 代码中做。

 <ListBox Name="listBox" ItemsSource="{Binding mySource}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <CheckBox IsChecked="{Binding IsSelectedProperty}">
                        </CheckBox>
                    </DataTemplate>
                </ListBox.ItemTemplate>
  </ListBox>


<CheckBox Name="chkAll" Content="CheckAll/UnCheckAll" IsChecked ={}/>

【问题讨论】:

  • @LynnCrumbling 此链接如何回答我的问题 :) 我的列表绑定工作正常且符合预期。问题出在独立复选框 chkAll 中。
  • 我会在具有设置器的视图模型中创建一个公共属性;当该 setter 的值 = true 时,循环遍历 mySource 中的所有项目并设置 IsSelected = true。 (注意:如果未选中任何项目,则需要设置相同的属性 = false。)您将无法在纯 xaml 中执行此操作。

标签: c# wpf xaml checkbox listbox


【解决方案1】:

我认为您将需要一个更高级别的视图模型属性来反映这种附加状态。该状态也有三个可能的值,因此请务必将 IsThreeState 设置为 true,并将其绑定到 Nullable&lt;bool&gt;

然后在这个属性的 setter 中,你可以更新所有其他的复选框属性。

对于每个项目的IsSelectedProperty,您还需要更新三态属性。

【讨论】:

    猜你喜欢
    • 2011-01-18
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2015-07-24
    相关资源
    最近更新 更多