2012-05-09 5 views
0

У меня есть класс, полученный из ItemsControl, в котором я реализую свой собственный алгоритм выбора, который использует MouseLeftButtonDown для изменения выбора.XAML - InputBindings предотвращает запуск MouseLeftButtonDown-Events

Теперь мне нужен конкретный элемент управление для обработки кликов мыши в ViewModel, поэтому я написал следующее:

<controls:DraggableItemsContainer bla="blub"> 
    <controls:DraggableItemsContainer.InputBindings> 
     <MouseBinding Gesture="LeftClick" Command="{Binding DeselectSubGroupsCommand}" /> 
    </controls:DraggableItemsContainer.InputBindings> 
</controls:DraggableItemsContainer> 

Что происходит сейчас, что я не получаю MouseLeftButtonDown мероприятия больше - что comprehensable потому что команда «e.handles» нажимает.

Но в этом случае это не то, что я хочу. Есть ли способ запустить мероприятие в любом случае?

PS: Да, мне нужно сделать выбор в MouseLeftButtonDown-событии, а не в любой Preview-событии

+0

Дополнительный вопрос: Вы говорите: «Что происходит сейчас, это ...» или «что происходит сейчас ...»? Помогите мне улучшить свой английский :-) – Jens

+0

Либо хорошо, хотя «что происходит сейчас» может быть немного более распространенным. –

ответ

1

два варианта:

  • Вы можете иметь свой обычай ItemsControl зацепить PreviewMouseDown вместо MouseDown.
  • Вы можете продолжить подключать MouseDown, но сделайте это, позвонив по телефону AddHandler и пройдите true для параметра handledEventsToo.

Если это важно, что вы получите уведомление после того, как MouseBinding выполнил свою работу, то вам нужно использовать AddHandler. Если вы с первого взгляда получаете сообщение, то PreviewMouseDown проще.

0

Я думаю, ваша проблема в том, что вы пытаетесь поймать то же событие, на тот же контроль, с использованием два разные подходы.

Попробуйте это:

<Grid> 
    <Grid.InputBindings> 
     <MouseBinding Gesture="LeftClick" Command="{Binding DeselectSubGroupsCommand}" /> 
    </Grid.InputBindings> 
    <controls:DraggableItemsContainer bla="blub"> 
     ..... 
    </controls:DraggableItemsContainer> 
</Grid> 

Убедитесь, что в вашем контроле у ​​вас есть e.Handled = false.

Это должно позволить вашей внутренней логике работать, а затем выполнить команду. Если вам это нужно в обратном порядке ..... я не знаю.

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

  • Нет связанных вопросов^_^