Goal У меня есть Combobox в WPF и всякий раз, когда пользователь выбирает элемент из Combobox. Я хочу закрыть Combobox (отображающее старое значение как выбранное значение) и отображать MessageBox с помощью Ok/Отмена. Если пользователь нажимает «ОК», новое выбранное значение должно быть установлено иначе, которое оно должно вернуть.WPF: Закрыть combobox при выборе и отображении элементов. Поле сообщения
Проблема Когда я выбираю элемент, я могу отображать MessageBox вместе с Combobox open, чего я не хочу. Как только пользователь выберет что-то, я хочу закрыть Combobox и отобразить Messagebox.
Как я могу это сделать?
XMAL код
<ComboBox Name="Currency" Grid.Row="1" Grid.Column="5" ItemsSource="{Binding comboboxSource}"
SelectedValuePath="Value.bank_currency" IsReadOnly="False" IsTextSearchEnabled="True" TextSearch.TextPath="Value.bank_currency"
SelectedItem="{Binding SelectedBankCurrency, UpdateSourceTrigger=LostFocus,Mode=Twoway}">
C# Код
public KeyValuePair<string, bankCurrencyObject>? SelectedBankCurrency
{
get { return _selectedCurrency; }
set
{
MessageBoxResult result = MessageBox.Show("Are you sure you want to change the currency?",
"Warning",
MessageBoxButton.OKCancel,
MessageBoxImage.Question);
if (result == MessageBoxResult.Cancel)
{
return;
}
else
{
//set values
}
}
}
Попытка использования SelectionChanged событие, но это не сработало,
private void Combobox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (DataContext == null)
return;
var combo = (sender as ComboBox);
if (combo != null && combo.IsDropDownOpen)
{
combo.IsDropDownOpen = false;
var binding = combo.GetBindingExpression(ComboBox.SelectedItemProperty);
binding.UpdateSource();
binding.UpdateTarget();
}
}`
', если (результат = MessageBoxResult.Cancel!) _selectedCurrency = значение;' – Vyrira
@Vyrira Я попытался это, но с этим тоже Combobox не близко и пересекаться с MessageBox – S52
Не у вас есть доступ к валюте поле со списком? Вы можете установить «Currency.IsDropDownOpen = false;» перед показом MessageBox. – Vyrira