在wpf中如何处理由使用该用户控件的页面中的用户控件内的按钮引发的事件

时间:2010-05-31 11:11:28

标签: wpf mvvm event-handling wpf-controls

我正在使用MVVM架构。我创建了一个包含按钮控件的用户控件。 我希望在使用此用户控件的页面中捕获按钮控件的单击事件。这该怎么做? Plase help :))

2 个答案:

答案 0 :(得分:4)

按钮具有Command属性。您应该通过绑定到ViewModel公开的ICommand来使用它而不是Click事件。

编辑:

两种可能性:

1)MVVM-way:在UserControl的ViewModel上拥有该命令的属性,然后从您使用的页面的ViewModel中设置该属性。

2)非MVVM方式(尽管你可以将它与1结合使用):在UserControl上为该命令设置一个依赖项属性,在UserControl的XAML中绑定该命令。然后,您可以从使用页面绑定到此依赖项属性。

答案 1 :(得分:2)

您可以在更高的父控件上定义事件:

通常你会:

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

但您也可以按如下方式在Grid上定义事件:

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

当然,只要它没有在您的事件处理程序(arguments.Handled = true;)中处理,它就会向上冒泡您的可视树,直到它到达您的页面!

希望这有帮助!