如果Items集合只包含一个值,WPF ComboBox会自动选择第一个值

时间:2010-08-25 10:41:56

标签: c# wpf combobox

我有一些包含许多ComboBox的设置对话框。通常,这些ComboBox只有一个可选值。因此,为了使对话更容易使用,我希望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一样(除了这个添加的行为)?

2 个答案:

答案 0 :(得分:1)

是的,ComboBox将继续完美地工作,而另一种方式(我个人喜欢的方式,因为我可以将多种行为添加到单个组合框中)是使用您链接的问题中建议的行为。

答案 1 :(得分:1)

是的,就是这样 - 否则它的工作方式相同。

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