WPF ComboBox автоматически выбирает первое значение, если коллекция Items содержит только одно

У меня есть диалог настроек с несколькими ComboBox. Чаще всего у этих ComboBox будет только одно выбираемое значение. Поэтому, чтобы упростить использование диалогового окна, я хочу, чтобы ComboBox автоматически выбирал одно значение, если и только если Items.Count == 1 && SelectedItem == null.

Я нашел это , но не хочу добавлять дополнительные зависимости, если я могу этого избежать.

В итоге я создал CustomControl на основе ComboBox с одним переопределением:

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 (за исключением этого добавленного поведения), когда дело касается стилей и т.п.?
1
задан Community 23 May 2017 в 09:57
поделиться

2 ответа

Да, именно так -- иначе будет работать одинаково.

Я подумал, что это может быть логическим завершением вашего предыдущего вопроса о подписке на события ComboBox.

1
ответ дан 2 September 2019 в 21:51
поделиться

Да, ComboBox будет продолжать работать нормально, а другой способ (лично мой предпочтительный способ, поскольку я могу добавить несколько вариантов поведения в один список со списком) заключается в использовании вариантов поведения, предложенных в вопросах, которые вы связаны с.

1
ответ дан 2 September 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: