2016-06-27 7 views
-1

У меня есть элемент управления ListBox с IntegerUpDown в каждом элементе ListBoxItem. Все работает нормально, но когда IntegerUpDown достигает значения min или max, которое я устанавливаю, если я нажимаю на отключенные стрелки, он вызывает событие выбора для списка. Disabled arrowIntegerUpDown триггер родительского элемента управления событие SelectionChanged

private void lbItem_SelectionChanged(Object sender, SelectionChangedEventArgs e) 
{  
    if (//e.source != integerupdowncontrol) 
     //update other view, etc. 
} 

ответ

0

Вы пробовали закреплять в SelectionChanged событие, проверка для инвалидов условия, и если инвалидов сета SelectionChangedEventArgs.Handled в true?

SelectionChangedEventArgs MSDN

private void OnSelectionChanged(Object sender, SelectionChangedEventArgs args){ 
     if(/*My min or max has been reached*/){ 
      args.Handled = true; 
      return; 
     } 
} 

Вот еще example with keypressed

+0

Как я могу проверить, если SelectionChanged событие произошло из-под контроля IntegerUpDown хотя? И Source, и OriginalSource указывают на список. Если я не знаю, что событие возникло из IntegerUpDown, я не могу его обработать. – sponge

+0

Ну, если вы не публикуете свой код, я не могу предоставить более подробную информацию @sponge –

+0

Я исправил проблему, добавив событие MouseLeftButtonDown для IntegerUpDown, в которое я установил Handled = true. Он чувствует себя «хакерским». – sponge