У меня есть combobox в моем приложении WPF:
<ComboBox ItemsSource="{Binding CompetitorBrands}" DisplayMemberPath="Value"
SelectedValuePath="Key" SelectedValue="{Binding Path=CompMfgBrandID, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" Text="{Binding CompMFGText}"/>
Связано с набором KeyValuePair<string, string>
Вот свойство CompMfgBrandID в моей модели ViewModel:
public string CompMfgBrandID
{
get { return _compMFG; }
set
{
if (StockToExchange != null && StockToExchange.Where(x => !string.IsNullOrEmpty(x.EnteredPartNumber)).Count() > 0)
{
var dr = MessageBox.Show("Changing the competitor manufacturer will remove all entered parts from the transaction. Proceed?",
"Transaction Type", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dr != DialogResult.Yes)
return;
}
_compMFG = value;
StockToExchange.Clear();
...a bunch of other functions that don't get called when you click 'No'...
OnPropertyChanged("CompMfgBrandID");
}
}
Если вы выберете "да", он будет вести себя так, как ожидалось. Элементы очищаются и вызывается остальные функции. Если я выберу "Нет", он вернется и не очистит мой список или вызовет любую из других функций, что хорошо, но combobox все еще отображает новый выбор. Мне нужно, чтобы он вернулся к исходному выбору, как будто ничего не изменилось, когда пользователь выбрал "Нет". Как я могу это сделать? Я также попытался добавить e.Handled = true
в codebehind, безрезультатно.