取消组合框选择使用行为更改事件

时间:2016-06-21 19:46:57

标签: c# wpf xaml

我有一个组合框,它将根据选择更改在数据网格中加载数据。 在改变组合框选择时,我需要检查数据网格中的当前数据是否正确。如果不正确我想取消组合框选择更改。

这是我的行为类

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;
            }
        }
    }

}

即使在处理完事件后,组合框中的所选项目也会发生变化。

请提出一些解决此问题的建议。

1 个答案:

答案 0 :(得分:0)

你能简单地做一个 myComboBox.SelectedIndex--

如果数据不正确?或者这会导致无限循环吗?