私は選択肢の変更に基づいてデータグリッドにデータをロードするコンボボックスを持っています。 コンボボックスの選択を変更したら、データグリッドの現在のデータが正しいかどうかを確認する必要があります。正しくない場合は、コンボボックス選択の変更をキャンセルしたいと思います。Combobox Selectionをキャンセルする動作を使用して変更されたイベント
はここ
public class ComboBoxSelectionBehaviour : Behavior<ComboBox>
{
public static readonly DependencyProperty SourceProperty = DependencyProperty.RegisterAttached(
"Source",
typeof(ViewModel),
typeof(ComboBoxSelectionBehaviour),
new PropertyMetadata(null));
public ViewModel Source
{
get { return (ViewModel)GetValue(SourceProperty); }
set { SetValue(SourceProperty, value); }
}
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.SelectionChanged += AssociatedObject_SelectionChanged; ;
}
protected override void OnDetaching()
{
base.OnDetaching();
AssociatedObject.SelectionChanged -= AssociatedObject_SelectionChanged;
}
private void AssociatedObject_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var combo = sender as ComboBox;
if (Source != null)
{
// Suppress the event if errors exist
if (!Source.IsDataCorrect())
{
e.Handled = true;
}
}
}
}
も、選択した項目が変更されたばかりのイベントコンボボックスを処理した後、私の行動クラスです。
この問題を解決するには、いくつかの提案をしてください。データが修正されていない場合は、単純に
myComboBox.SelectedIndex--
を
プロパティが変更されたときにViewModelで処理することをお勧めします。 – tgpdyk