私はMVVMの方法でWPF DataGridを使用しており、ViewModelからの選択変更を元に戻すことに問題があります。WPF DataGridキャンセル選択の変更
これを行う実績のある方法はありますか?最近試したコードは以下の通りです。今では、コードの中にハックを入れて投資することさえ気にしません。
public SearchResult SelectedSearchResult
{
get { return _selectedSearchResult; }
set
{
if (value != _selectedSearchResult)
{
var originalValue = _selectedSearchResult != null ? _selectedSearchResult.Copy() : null;
_selectedSearchResult = value;
if (!DispatchSelectionChange(value)) // Returns false if the selection has to be cancelled.
{
_selectedSearchResult = originalValue;
// Invokes the property change asynchronously to revert the selection.
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.ContextIdle, new Action(() => NotifyOfPropertyChange(() => SelectedSearchResult)));
return;
}
NotifyOfPropertyChange(() => SelectedSearchResult);
}
}
}
こんにちはblinkmeris、遅く返事を申し訳ありません。私が何をしようとしているのは、彼が別の結果を選択したときに(DispatchSelectionChange内の)変更を保存するための確認メッセージをユーザーに表示し、ユーザーがキャンセルすることを選択した場合、元のものに戻す必要があります。 –
あなたが指摘した両方の方法を試しました。私の場合キーボードとマウスのイベントのタップは適切ではありません。そして、ICollectionViewは動作しません。その場合、CurrentItemが同期されていても、グリッドは視覚的に別の要素を表示しますWPFのバグです。 –