当前位置:  开发笔记 > 编程语言 > 正文

WPF自定义路由事件问题

如何解决《WPF自定义路由事件问题》经验,为你挑选了1个好方法。

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

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



1> Todd White..:

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

您始终可以在静态类上注册自定义事件,并将其提升到您想要的任何位置.该键盘类确实与它的所有事件(例如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);

如果您希望其他类将该事件作为公共字段拥有,则需要添加所有者.

public class MyCustomControl : Control
{
    public static readonly RoutedEvent MyCustomEvent = RoutedEventUtility.MyCustomEvent.AddOwner(typeof(MyCustomControl));
}

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有