gpt4 book ai didi

c# - 在自定义用户控件中公开事件 - Window Store App

转载 作者:行者123 更新时间:2023-11-30 12:45:26 26 4
gpt4 key购买 nike

我似乎在 Xaml 中公开事件时遇到问题。我已经在这样的自定义用户控件中声明了一个公共(public)事件处理程序。

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 中为其分配事件时,找不到公开的事件处理程序。即

<local:FoodItemControl thumbnailClicked="SOMETHING" />

我是否遗漏了我找到的示例中的某些内容?

编辑:看来我的问题是我将事件定义为 EventHandler< StringEventArgs >。一旦我将其更改为简单的 EventHandler I.e,它就起作用了

public event EventHandler thumbnailedClicked;

但是我还是不太明白这是为什么?

最佳答案

您必须创建一个依赖属性并注册该属性以在用户控件中公开它:

public sealed partial class FoodItemControl : UserControl
{
public EventHandler thumbnailClicked
{
get { return (EventHandler)GetValue(thumbnailClickedProperty); }
set { SetValue(thumbnailClickedProperty, value); }
}

public static readonly DependencyProperty thumbnailClickedProperty =
DependencyProperty.Register("thumbnailClicked", typeof(EventHandler),
typeof(FoodItemControl), new PropertyMetadata(""));


public FoodItemControl()
{
this.InitializeComponent();
(this.Content as FrameworkElement).DataContext = this;
}
}

关于c# - 在自定义用户控件中公开事件 - Window Store App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24642334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com