В wpf как обработать событие, вызванное кнопкой внутри пользовательского элемента управления на странице, которая использует этот пользовательский элемент управления - PullRequest
2 голосов
/ 31 мая 2010

Я использую архитектуру MVVM. Я создал пользовательский элемент управления, который содержит элемент управления кнопки. Я хочу, чтобы событие нажатия кнопки управления было зафиксировано на странице, которая использует этот элемент управления пользователя Как это сделать? Помогите:)

Ответы [ 2 ]

4 голосов
/ 31 мая 2010

Кнопка имеет свойство Command. Вы должны использовать это вместо события Click, связавшись с ICommand, предоставляемой вашей ViewModel.

EDIT:

Две возможности:

1) MVVM-способ: есть свойство для команды в ViewModel вашего UserControl, которое вы затем устанавливаете из ViewModel используемой страницы.

2) Способ не MVVM (хотя вы могли бы объединить это с 1): иметь свойство зависимости в вашем UserControl для команды, к которой вы привязываетесь в XAML вашего UserControl. Затем вы можете связать это свойство зависимости со страницы использования.

2 голосов
/ 31 мая 2010

Вы можете определить событие для вышестоящего родительского элемента управления:

Обычно вы должны иметь:

<Grid>
      <Button Click="SomeMagicalEventHandler" />
</Grid>

Но вы также можете определить событие в таблице следующим образом:

<Grid Button.Click="SomeMagicalEventHandler">
      <Button />
</Grid>

Конечно, пока он не обработан в вашем обработчике событий (arguments.Handled = true;), он будет пузыриться вверх по вашему визуальному дереву, пока не достигнет вашей страницы!

Надеюсь, это поможет!

...