【问题标题】:Extended WPF Toolkit - CheckComboBox扩展的 WPF 工具包 - CheckComboBox
【发布时间】:2013-08-05 12:01:58
【问题描述】:

是否有人知道在 CheckComboBox for WPFToolkit 中手动启用(打开勾选)复选框的方法?

不幸的是,组合框中的项目都是字符串。

当勾选“全选”复选框时,我正在尝试启用所有标志。

【问题讨论】:

  • 你试过用SelectedItems="{Binding SelectedItems}"
  • 它是 SelectedItem="{Binding SelectedItems}" - 但是我有 :)
  • 根据documentation 有“SelectedItem”和“SelectedItems”
  • 谢谢,是的 - 它可以让您选择项目,但使用扩展 WPF 工具包,它们不是实际的复选框,只有它们的值,因此您无法操纵复选框状态。

标签: wpf wpf-controls wpftoolkit


【解决方案1】:

这是一个相当晚的回复,但我认为最好发布这个以防它帮助某人。我对 WPFToolkit 版本使用了以下方法:

public class Descriptor : INotifyPropertyChanged
{
    private bool isSelected;

    public bool IsSelected
    {
        get
        {
            return this.isSelected;
        }
        set
        {
            if (this.isSelected != value)
            {
                this.isSelected = value;
                // Raise INotifyPropertyChanged
            }
        }
    }

    public string Name { get; set; }
}

创建一个集合,然后将它们分配给 CheckComboBox 的 ItemsSource。

为了处理全选,我们有一个选项标记为:“”作为集合中的第一项,然后如果勾选此项,则所有项目都将被取消选择,并且所有情况都在后台处理。要处理选择 Changed,它确实需要向 Descriptor 类添加一个事件,并在每次 IsSelected 属性更改时触发它。

【讨论】:

  • 我看到你来自 INotifyPropertyChanged,但你注释掉了 // Raise INotifyPropertyChanged。我有点困惑。我应该通知 IsSelected 吗?
  • @Fei 你需要提高它。我的评论旨在指出它需要在没有实际提供实现的情况下提出。
【解决方案2】:

我最终放弃了 Extended WPFToolkit,因为它无法直接访问复选框。

相反,我创建了一个 ComboBox 并在其中手动定义了复选框,我可以通过名称直接访问它,并且可以通过使用它的 [Checked/Unchecked[ 事件来实现“全选”,并使用 ComboBox SelectionChanged 来显示以 CSV 格式表示所选内容的默认值。

也许笨重,但它可以完成工作。

PS。我什至不需要为 ComboBox 使用 DataTemplate

【讨论】:

    【解决方案3】:

    后面代码中的一种方式是

    var ComboSelector = MyCheckComboBox as  Xceed.Wpf.Toolkit.Primitives.Selector;
    foreach(var item in MyCheckComboBox.Items)
    ComboSelector.SelectedItems.Add(item);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多