Обновление ComboBoxItem при нажатии на ToggleButton

221
21 декабря 2017, 22:55

Имеется ComboBox, в котором хранится список доступных портов. На данный момент для обновления используется отдельная кнопка.

Сейчас необходимо избавиться от нее, и реализовать обновление содержимого ComboBox по нажатию на ToggleButton этого ComboBox.
Возможно ли такое реализовать? И если возможно, то как это сделать?

Answer 1

обновлять в обработчике события DropDownOpened этого ComboBox'а ? оно возникает при нажатии на кнопку раскрытия выпадающего списка, но до того как этот список будет отрисован.

Answer 2

Если вы пользуетесь MVVM, правильный подход такой: ваш список портов должен быть актуален в любой момент.

Для этого вы в VM кладёте ObservableCollection<PortVM> (ну или хотя бы ObservableCollection<string>), и обновляете её.

Для обновления можно либо подписаться на WMI-сообщения, как показано здесь, либо просто проводить поллинг списка каждую секунду:

while (true)
{
    var ports = SerialPort.GetPortNames().OrderBy(name => name);
    PortList.Clear();
    foreach (var port in ports)
        PortList.Add(port);
    await Task.Delay(1000);
}

Ну и в XAML

<ComboBox ItemsSource="{Binding PortList}"/>

В таком варианте список будет обновляться даже когда ваш комбобокс раскрыт.

READ ALSO
Как войти в систему с помощью запроса?

Как войти в систему с помощью запроса?

Существует форма для ввода логина и пароляКак можно войти в систему, не вводя логин и пароль (передавая их другим образом)?

217
Roundcube publickey.js (keyserver)

Roundcube publickey.js (keyserver)

Привет, есть roundcube c enigma, в нем есть возможность поиска и импортирование ключа, но хочу использовать свой hkp, загрепал и нашел где править, правится...

208
Не могу разобраться в порядке запуска функций

Не могу разобраться в порядке запуска функций

Доброго времени сутокПодскажите новичку почему в данном коде функции Drag() и Info () начинают работать только после исполнения события $("

356