gpt4 book ai didi

WPF 自定义路由事件问题

转载 作者:行者123 更新时间:2023-12-04 11:46:27 25 4
gpt4 key购买 nike

如何让两个不相关的控件引发相同的自定义事件?到目前为止,我看到的所有示例都在单个控件中定义了一个事件,我应该采取不同的方法吗?

例如。我想从按钮和文本框的 OnFocus 处理程序中引发自定义冒泡事件。

最佳答案

首先让我说你的问题并没有表明你不想使用现有的 UIElement.GotFocusEvent ,但我假设你知道它并且有你不使用它的理由。

您始终可以在静态类上注册自定义事件,并在您想要的任何地方引发它。 Keyboard class处理它的所有事件(例如 Keyboard.KeyDownEvent )。

public static class RoutedEventUtility
{
public static readonly RoutedEvent MyCustomEvent = EventManager.RegisterRoutedEvent("MyCustomEvent", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(RoutedEventUtility));
}

就像任何其他 RoutedEvent 一样引发事件。
RoutedEventArgs args = new RoutedEventArgs(RoutedEventUtility.MyCustomEvent);
RaiseEvent(args);

如果您希望另一个类(class)将事件作为公共(public)字段拥有,那么您将需要添加一个所有者。
public class MyCustomControl : Control
{
public static readonly RoutedEvent MyCustomEvent = RoutedEventUtility.MyCustomEvent.AddOwner(typeof(MyCustomControl));
}

关于WPF 自定义路由事件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/277001/

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