Имеется ComboBox, в котором хранится список доступных портов.
На данный момент для обновления используется отдельная кнопка.
Сейчас необходимо избавиться от нее, и реализовать обновление содержимого ComboBox по нажатию на ToggleButton этого ComboBox.
Возможно ли такое реализовать? И если возможно, то как это сделать?
обновлять в обработчике события DropDownOpened этого ComboBox'а ? оно возникает при нажатии на кнопку раскрытия выпадающего списка, но до того как этот список будет отрисован.
Если вы пользуетесь 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}"/>
В таком варианте список будет обновляться даже когда ваш комбобокс раскрыт.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей