У меня есть выпадающий список, связанный с Enum
.Когда я нажимаю на новое значение в своем поле со списком, я генерирую сообщение на подключенное устройство и получаю ответ обратно.Я хочу сохранить любое полученное значение обратно.
Мое обычное старое связанное свойство выглядит так:
private Enum enumValue;
public Enum EnumValue
{
get => enumValue;
set
{
if (enumValue != value)
{
enumValue = value;
sendToDevice();
}
}
}
Мое обновление с устройства выглядит так:
public void SetValueFromDevice(string valueFromDevice)
{
enumValue = (Enum)Enum.Parse(EnumType, valueFromDevice);
RaisePropertyChanged(nameof(EnumValue));
}
Обратите внимание, что я устанавливаю приватную переменную enumValue
напрямую, потому что я не хочу запускать другое исходящее сообщение на свое устройство, если мне это не нужно.
Вот ситуация: допустим, у меня есть enum, который выглядит следующим образом:
public enum Sources
{
Off,
Low,
Mid,
Hi
}
Написанная мной прошивка не любит значение low в некоторых версиях устройства,Вместо этого он ответит тем же текущим значением.Я хочу отправить это обратно в поле со списком, вместо того, чтобы показывать неправильное значение пользователю.
Теперь, похоже, происходит, когда я нажимаю на элемент со списком, он отправляет сообщение на мое устройство, получаетответ, а затем отправляет его обратно соответствующим образом.Я могу пройти и увидеть, что выпадающий список выполняет «get» после того, как я позвонил RaisePropertyChanged
, но, похоже, он вообще не обновляет выбранный элемент.
Я могу вызвать SetValueFromDevice
, и это всегдаработает, так что похоже, что это пользовательский интерфейс.
Я даже пытался полностью заставить его с помощью
control.DropDownClosed += new EventHandler(SourceBox_DropDownClosed);
....
private void SourceBox_DropDownClosed(object sender, EventArgs e)
{
ComboBox box = sender as ComboBox;
box.GetBindingExpression(ComboBox.SelectedItemProperty).UpdateTarget();
}
... и это ничего не сделало.Что я здесь не так делаю?Есть ли способ установить элемент в выпадающем списке во время взаимодействия выбора элемента?