我似乎在XAML中公开事件时遇到了问题。我在这样的自定义用户控件中声明了一个公共事件处理程序。
public sealed partial class FoodItemControl : UserControl
{
public event EventHandler<StringEventArgs> thumbnailClicked;
public FoodItemControl()
{
InitializeComponent();
(this.Content as FrameworkElement).DataContext = this;
}
private void Thumbnail_Tapped(object sender, TappedRoutedEventArgs e)
{
var handler = thumbnailClicked;
if (handler != null)
{
handler(this, new StringEventArgs());
}
}
}
但是当我在xaml中给它分配一个事件时,却找不到暴露的eventhandler。
<local:FoodItemControl thumbnailClicked="SOMETHING" />
我找到的示例中是否遗漏了什么?
EDIT:看起来我的问题是我将事件定义为EventHandler< StringEventArgs >。一旦我将其更改为简单的EventHandler(即
public event EventHandler thumbnailedClicked;
可是我还是不明白为什么?
3条答案
按热度按时间mwkjh3gx1#
必须创建一个依赖项属性并注册该属性,才能在用户控件中公开它:
jm2pwxwz2#
也可以使用
TypedEventHandler
类型:这允许您指定自己的事件参数类,这些类派生自
EventArgs
。hec6srdp3#
我是从google来的,这是唯一一个与自定义控件中的事件处理程序相关的问题。对我来说,这个问题的根本原因很简单,但我花了很长时间才找到它,而你这么容易就把它读过头了。
这就是我所尝试的:
这是有效的方法:
忘了在
EventHandler
前面加上event
了,注意用了问号?
,因为我在这个winui3项目里有enabled the nullable feature,现在一切正常了,不需要再加什么复杂的东西了。