gpt4 book ai didi

wpf 处理事件

转载 作者:行者123 更新时间:2023-12-04 21:56:02 25 4
gpt4 key购买 nike

我用一些按钮和事件编写了自己的控件 - 这就像一个魅力。然后我动态地把这个控件作为一个 child 放在 StackPanel 中。在其他类(class)。我如何在这个类中(使用 StackPanel )从我的自定义控件中获取事件 - 我的用户控件中有一个公共(public)事件 - 我如何从 StackPanel 处理它类(class)?

我正在尝试写类似的东西:

 public event EventHandler<ThumbnailEventArgs> ThumbnailClick
{

add { AddHandler(ThumbnailClickEventRouted, value); }

remove { RemoveHandler(ThumbnailClickEventRouted, value); }

}
public static RoutedEvent ThumbnailClickEventRouted;

让我的 public ThumbnailClick路由但它不起作用。

最佳答案

您的路由事件应该会冒泡,所以只需在堆栈面板上捕获它。确保在注册路由事件时选择 RoutingStrategy.Bubble

主窗口

<StackPanel local:UserControl1.Tap="Grid_Tap" >
<local:UserControl1 Width="120"></local:UserControl1>
</StackPanel>

用户控制
<Grid>
<Button Click="Button_Click">Tap Me</Button>
</Grid>

后面的用户控制代码
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}

// Create a custom routed event by first registering a RoutedEventID
// This event uses the bubbling routing strategy
public static readonly RoutedEvent TapEvent = EventManager.RegisterRoutedEvent(
"Tap", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(UserControl1));

// Provide CLR accessors for the event
public event RoutedEventHandler Tap
{
add { AddHandler(TapEvent, value); }
remove { RemoveHandler(TapEvent, value); }
}

// This method raises the Tap event
void RaiseTapEvent()
{
RoutedEventArgs newEventArgs = new RoutedEventArgs(UserControl1.TapEvent);
RaiseEvent(newEventArgs);
}

private void Button_Click(object sender, RoutedEventArgs e)
{
RaiseTapEvent();
}
}

UserControl1 中的一些代码来自 Microsoft 文档...

关于wpf 处理事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8385921/

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