问题 WPF如何让UserControl继承Button?


我创建了一个UserControl,它由一对椭圆和标签组成。我把它添加到另一种形式就好了,看起来很漂亮。

然后我开始添加一些事件处理程序,并发现我所做的控件没有公开Click事件。哎呀。容易修复,对吧?回到我制作的UserControl上的代码隐藏,让它继承Button。

不幸的是,这样做会导致“MyControl的部分声明不能指定不同的基类”消息。这是一个惊喜,因为我没有声明任何其他基类。搜索有问题的部分也没有返回任何结果。

有没有办法打败这个问题?如果没有,这里最简单的解决方法是什么?我的目标只是在UserControl上获取Click事件。


5137
2017-12-13 06:34


起源



答案:


是的,你已经声明了其他基类:)只需信任编译器:)

当你写作 <UserControl ...></UserControl> 在XAML中,您是UserControl的子类。如果要子类化Button,请使用 <Button ...></Button> 相反,代码隐藏文件中的“:Button”。

但是我强烈建议你不要将Button作为子类,这对你的任务来说太过分了。您可以使用MouseLeftButtonUp事件而不是Click事件。


11
2017-12-13 09:06



MouseLeftButtonUp事件依赖于始终被鼠标单击的按钮。当用户按空格键时,会触发Click事件,但不会触发MouseLeftButtonUp(空格键不是鼠标左键)。 - Marian Spanik


答案:


是的,你已经声明了其他基类:)只需信任编译器:)

当你写作 <UserControl ...></UserControl> 在XAML中,您是UserControl的子类。如果要子类化Button,请使用 <Button ...></Button> 相反,代码隐藏文件中的“:Button”。

但是我强烈建议你不要将Button作为子类,这对你的任务来说太过分了。您可以使用MouseLeftButtonUp事件而不是Click事件。


11
2017-12-13 09:06



MouseLeftButtonUp事件依赖于始终被鼠标单击的按钮。当用户按空格键时,会触发Click事件,但不会触发MouseLeftButtonUp(空格键不是鼠标左键)。 - Marian Spanik