91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2022-02-28 09:26:09 來源:億速云 閱讀:192 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“WPF自定義路由事件的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“WPF自定義路由事件的示例分析”這篇文章吧。

一、聲明路由事件變量并注冊

定義只讀的靜態變量字段RouteEvent類來聲明一個變量,然后使用EventManager的RegisterRoutedEvent()方法向事件系統注冊路由事件,該方法的簽名如下:

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

該方法帶有四個參數:

  • 第一個參數name表示該路由事件在WPF事件系統中的名稱。

  • 第二個參數routingStrategy是RoutingStrategy類型的枚舉值,標明了路由事件的路由策略,共三種策略:

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

    • 第一種Bubble是冒泡策略,這種模式是從觸發點向根節點傳遞,直到最外層。

    • 第二種是Direct就是傳統的事件一樣的。

    • 第三種是隧道策略,這和冒泡策略相反,向下傳遞。

  • 第三個參數handlerType用來標明事件處理函數的類型。

  • 第四個個參數ownerType則用來標明擁有該路由事件的類型。

EventManager的RegisterRoutedEvent()方法返回一個RoutedEvent類型的實例。一般情況下,該實例將由一個public static readonly字段所保存。

二、通過標準的.NET事件包裝路由事件

事件包裝器使用AddHandler方法來添加路由事件的調用程序,然后使用RemoveHandler來刪除已經添加的調用程序。

三、創建可以激發路由事件的方法

演示創建自定義路由事件:

1、新建用戶控件,添加一個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>

2、在用戶控件的后臺代碼中創建自定義路由事件,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);
        }
    }
}

3、在主界面中引入新創建的用戶控件,使用自定義的路由事件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>

4、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());
        }
    }
}

5、運行程序,單擊Button按鈕,效果如下所示:

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

以上是“WPF自定義路由事件的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

wpf
AI

项城市| 丁青县| 嫩江县| 襄城县| 道孚县| 巴中市| 桐柏县| 德庆县| 亳州市| 康保县| 陇川县| 吉水县| 藁城市| 洱源县| 万载县| 禄劝| 于都县| 札达县| 怀宁县| 罗江县| 克山县| 文登市| 曲靖市| 金秀| 东城区| 长丰县| 庆元县| 永春县| 龙泉市| 彭泽县| 金坛市| 香河县| 本溪市| 台中县| 麟游县| 夏邑县| 阳高县| 隆子县| 双城市| 元阳县| 长治县|