例如,我有一个 UserControl,它是用于在列表中显示学生的模板。你可以从它的内容中抽象出来。
我想为它创建一个 Click 事件,就像一个按钮,它从调用它的类(例如,窗口)中获取一个事件处理程序。是否可以创建这样的事件(类似于 DependencyProoerty)?能够简单地在标记中传递方法(再次,类似于按钮的单击事件)。好吧,或者其他事件(当您将鼠标悬停在用户控件上时等)
*找到另一种方式 - 在 Xaml 中更改 UserControl 声明并将继承更改为 Button。
例如,我有一个 UserControl,它是用于在列表中显示学生的模板。你可以从它的内容中抽象出来。
我想为它创建一个 Click 事件,就像一个按钮,它从调用它的类(例如,窗口)中获取一个事件处理程序。是否可以创建这样的事件(类似于 DependencyProoerty)?能够简单地在标记中传递方法(再次,类似于按钮的单击事件)。好吧,或者其他事件(当您将鼠标悬停在用户控件上时等)
*找到另一种方式 - 在 Xaml 中更改 UserControl 声明并将继承更改为 Button。
我认为最简单的方法是:
假设我们有一些
UserControl
,它是一个包装器Button
,我们需要从中抛出“控件”。我们做必要的DependencyProperty
,我只会做两个:Text
- 将负责按钮上的书面文字。Command
- 负责点击此按钮。我们最终得到了这个:
在 XAML 中,这很简单:
就是这样,我们已经转发了两个属性,现在我们可以安全地使用它们了:
如果我们仍然需要事件(并且 WPF 中的所有事件都被替换而没有问题,并且不清楚为什么需要这样做),那么就有用于此类目的的事件路由。它看起来像这样:
控件 XAML 中的按钮本身如下所示:
现在我们的控件将事件抛出,我们可以安全地使用它,就像之前的任何其他事件一样:
事件处理程序
这就是我们可以非常简单地操作控件事件的方式,并且在大多数情况下,事件本身已经足够标准对象所具有的了,假设我们需要一个 click-wrap,例如,
<Border>
或者其他东西<Button>
,删除所有样式从中(使其透明,无边框等),就是这样,我们有一个处理点击的元素。