文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

WPF自定义路由事件的示例分析

2023-06-29 07:20

关注

这篇文章主要为大家展示了“WPF自定义路由事件的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“WPF自定义路由事件的示例分析”这篇文章吧。

一、声明路由事件变量并注册

定义只读的静态变量字段RouteEvent类来声明一个变量,然后使用EventManager的RegisterRoutedEvent()方法向事件系统注册路由事件,该方法的签名如下:

public static RoutedEvent RegisterRoutedEvent(string name, RoutingStrategy routingStrategy, Type handlerType, Type ownerType);

该方法带有四个参数:

EventManager的RegisterRoutedEvent()方法返回一个RoutedEvent类型的实例。一般情况下,该实例将由一个public static readonly字段所保存。

二、通过标准的.NET事件包装路由事件

事件包装器使用AddHandler方法来添加路由事件的调用程序,然后使用RemoveHandler来删除已经添加的调用程序。

三、创建可以激发路由事件的方法

演示创建自定义路由事件:

新建用户控件,添加一个Button按钮,添加按钮的Click事件,XAML代码如下:

<UserControl x:Class="CustomWpfRouteEvent.RouteEventControl"             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"             mc:Ignorable="d"             d:DesignHeight="300" d:DesignWidth="300">    <Grid>        <Button Height="30" Width="100" Content="调用路由事件" Click="Button_Click"></Button>    </Grid></UserControl>

在用户控件的后台代码中创建自定义路由事件,C#代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace CustomWpfRouteEvent{    /// <summary>    /// RouteEventControl.xaml 的交互逻辑    /// </summary>    public partial class RouteEventControl : UserControl    {        public RouteEventControl()        {            InitializeComponent();        }        //1、声明并注册路由事件,使用冒泡策略        public static readonly RoutedEvent MyClientEvent = EventManager.RegisterRoutedEvent("MyClick",            RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(RouteEventControl));        //2、通过.NET事件包装路由事件        public event RoutedEventHandler MyClick        {            add            {                AddHandler(MyClientEvent, value);            }            remove            {                RemoveHandler(MyClientEvent, value);            }        }        /// <summary>        /// 3、使用按钮的单击事件激发路由事件        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void Button_Click(object sender, RoutedEventArgs e)        {            RoutedEventArgs arg = new RoutedEventArgs();            arg.RoutedEvent = MyClientEvent;            RaiseEvent(arg);        }    }}

在主界面中引入新创建的用户控件,使用自定义的路由事件MyClick,并为MyClick事件编写调用的方法,XAML代码如下:

<Window x:Class="CustomWpfRouteEvent.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        xmlns:u="clr-namespace:CustomWpfRouteEvent"        Title="演示自定义路由事件" Height="350" Width="525" WindowStartupLocation="CenterScreen">    <Grid>        <u:RouteEventControl MyClick="RouteEventControl_MyClick"></u:RouteEventControl>    </Grid></Window>

RouteEventControl_MyClick方法的后台代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace CustomWpfRouteEvent{    /// <summary>    /// MainWindow.xaml 的交互逻辑    /// </summary>    public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();        }        private void RouteEventControl_MyClick(object sender, RoutedEventArgs e)        {            MessageBox.Show("Hello:" + e.Source.ToString());        }    }}

运行程序,单击Button按钮,效果如下所示:

WPF自定义路由事件的示例分析

以上是“WPF自定义路由事件的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯