2016-06-21 2 views
0

У меня есть combobox, который будет загружать данные в сетке данных на основе изменения выбора. Об изменении выбора combobox мне нужно проверить правильность текущих данных в сетке данных. если не правильно, я хотел бы отменить изменение выбора combobox.Отменить 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; 
      } 
     } 
    } 

} 

даже после обработки выпадающих событий выбранного элемент становится изменен.

Просьба дать несколько предложений по решению этой проблемы.

+0

Я бы предложил обработать его на вас ViewModel, когда свойство изменено. – tgpdyk

ответ

0

Не могли бы вы просто просто сделать
myComboBox.SelectedIndex--

Если данные не исправить? Или это вызовет бесконечный цикл?

+0

Да, это создаст бесконечный цикл. Поэтому я использовал предварительные события и события предварительного просмотра, чтобы справиться с этой ситуацией. Я знаю, что это не чисто, но все же это работает. – Peekay

Смежные вопросы