【问题标题】:WPF ComboBox autoselecting first value if the Items collection contains only one如果 Items 集合仅包含一个值,则 WPF ComboBox 自动选择第一个值
【发布时间】:2010-08-25 10:41:55
【问题描述】:

我有许多组合框的设置对话框。通常,这些组合框只有一个可选值。因此,为了使对话框更易于使用,我希望 ComboBox 在且仅当 Items.Count == 1 && SelectedItem == null 时自动选择单个值。

我找到了this,但如果可以避免的话,我不想添加额外的依赖项。

我最终创建了一个基于 ComboBox 的 CustomControl,并带有一个覆盖:

public class SmartComboBox : ComboBox
{
    public SmartComboBox()
    {
    }

    protected override void OnItemsChanged(
        NotifyCollectionChangedEventArgs e)
    {
        base.OnItemsChanged(e);

        if (Items.Count == 1 && SelectedItem == null)
        {
            SelectedItem = Items[0];
        }
    }
}
  • 是否可以使用触发器/挂钩实现相同的行为?
  • 这就是我在扩展 ComboBox 时需要做的全部事情吗?我的意思是,当涉及到样式等时,它会像 ComboBox 一样工作吗(除了这个添加的行为)?

【问题讨论】:

  • SelectedIndex = 0 是更可靠的选择。就我而言,根据我的绑定,SelectedItem 并不总是有效,因为我添加了一个虚拟的“没有可用的项目”项目,但我的“SelectedItem”绑定拒绝了

标签: c# wpf combobox


【解决方案1】:

是的,就是这样——否则它的工作原理是一样的。

我认为这可能是您之前关于订阅 ComboBox 事件的问题的逻辑端点。

【讨论】:

  • 你在跟踪我吗? ;) 但是,它确实是解决同一问题的另一种方法。我想我会选择这个。
【解决方案2】:

是的,组合框将继续正常工作,另一种方式(我个人的首选方式,因为我可以将多个行为添加到单个组合框)是使用您链接到的问题中建议的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2014-12-16
    • 2023-01-09
    • 2014-02-21
    • 2016-05-29
    • 2019-10-09
    • 2010-09-23
    相关资源
    最近更新 更多