リスト型のコンボボックスがあります。データコンテキストを介してバインドされた ItemsSource と ItemSelected があります。選択したアイテムが変更されている場合は、ユーザーのアクションを確認するポップアップ メッセージを表示します。「OK」をクリックすると、選択が変更されます。ただし、キャンセルをクリックすると、選択がキャンセルされ、前のアイテムが保持されます。以下は、コンボボックスの SelectedItem にバインドされているプロパティです。
Public SomeClass Sel
{
get
{
return _sel;
}
set
{
if (_sel != value)
{
var sview = _sel;
if (Compare())
{
_sel = value;
if (Sel != null)
IsDefault = Sel.IsDefault;
OnPropertyChanged(() => Sel);
}
else
{
MessageBoxResult result = MessageBox.Show("Message.", "Owb Message", MessageBoxButton.OKCancel);
if (result == MessageBoxResult.OK)
{
_sel = value;
if (Sel != null)
IsDefault = Sel.IsDefault;
OnPropertyChanged(() => Sel);
}
else
{
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
_sel = sview;
OnPropertyChanged("Sel");
}), DispatcherPriority.Send, null);
return;
}
}
}
}
}
コンボ ボックスはポップ ウィンドウにあります。その場合、 Dispatcher オブジェクトは機能しますか?