Событие Combobox DropDownOpened - PullRequest
       3

Событие Combobox DropDownOpened

1 голос
/ 21 апреля 2011

У меня есть поле со списком внутри представления списка. И различные элементы (строки) в представлении списка должны отображать (в зависимости от некоторого условия) один из 3 наборов элементов поля со списком в соответствующем поле со списком, которое есть. Сейчас я достигаю этого, используя 3 шаблона данных, привязанных к 3 различным свойствам List<string>. Я подключаю соответствующие шаблоны данных во время события DropDownOpened со списком.

Проблема, с которой я сталкиваюсь, заключается в том, что мне приходится дважды щелкать поле со списком, чтобы оно выпало. Я набрал Debug.WriteLine(), чтобы проверить, выполняет ли мой первый щелчок выбор шаблона данных, и обнаружил, что это действительно так. Но только то, что он не выпадает при первом же нажатии.

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

У меня вопрос: есть ли другой способ выполнить то, что я пытаюсь, или мне нужно внести какие-либо изменения в мой существующий обработчик событий DropDownOpened.

Пожалуйста, предложите.

РЕДАКТИРОВАТЬ: я использую WPF

Спасибо

1 Ответ

1 голос
/ 21 апреля 2011

Будет ли возможность использовать стили для установки элементов? например,

<ComboBox>
    <ComboBox.Style>
        <Style TargetType="{x:Type ComboBox}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding SomeConditionalProperty}"
                             Value="SomeConditionalValue">
                    <Setter Property="ItemsSource" Value="{BindingToFindRightItems}"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding SomeConditionalProperty}"
                             Value="AnotherValue">
                    <Setter Property="ItemsSource" Value="{BindingToFindRightItemsForAnotherValue}"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ComboBox.Style>
</ComboBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...