国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【W(wǎng)PF】附加事件

這篇具有很好參考價值的文章主要介紹了【W(wǎng)PF】附加事件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

什么是附加事件

Microsoft 官方概述:
??附加事件可用于在非元素類中定義新的 路由事件 ,并在樹中的任何元素上引發(fā)該事件。 為此,必須將附加事件注冊為路由事件,并提供支持附加事件功能的特定 支持代碼 。 由于附加事件注冊為路由事件,因此在元素樹中引發(fā)時,它們會傳播到元素樹中。

簡單來說就是,可以進(jìn)行附加操作的事件,必須為路由事件RoutedEvent)。

附加事件用法

??在 XAML 語法中,附加事件由其 事件名稱所有者 類型指定,格式為 <owner type>.<event name>。 由于事件名稱使用其所有者類型的名稱進(jìn)行限定,因此語法允許事件附加到任何可以實例化的元素。 此語法也適用于附加到事件路由中任意元素的常規(guī)路由事件的處理程序。

Microsoft 官方文檔

這里簡略的借用文檔中的說明,詳細(xì)學(xué)習(xí)請以文檔為準(zhǔn):附加事件概述 (WPF .NET)

附加事件案例

定義自定義控件

using System.Windows;
using System.Windows.Controls;

namespace assembly
{
    /// <summary>
    /// 按照步驟 1a 或 1b 操作,然后執(zhí)行步驟 2 以在 XAML 文件中使用此自定義控件。
    ///
    /// 步驟 1a) 在當(dāng)前項目中存在的 XAML 文件中使用該自定義控件。
    /// 將此 XmlNamespace 特性添加到要使用該特性的標(biāo)記文件的根
    /// 元素中:
    ///
    ///     xmlns:MyNamespace="clr-namespace:assembly"
    ///
    ///
    /// 步驟 1b) 在其他項目中存在的 XAML 文件中使用該自定義控件。
    /// 將此 XmlNamespace 特性添加到要使用該特性的標(biāo)記文件的根
    /// 元素中:
    ///
    ///     xmlns:MyNamespace="clr-namespace:assembly;assembly=assembly"
    ///
    /// 您還需要添加一個從 XAML 文件所在的項目到此項目的項目引用,
    /// 并重新生成以避免編譯錯誤:
    ///
    ///     在解決方案資源管理器中右擊目標(biāo)項目,然后依次單擊
    ///     “添加引用”->“項目”->[瀏覽查找并選擇此項目]
    ///
    ///
    /// 步驟 2)
    /// 繼續(xù)操作并在 XAML 文件中使用控件。
    ///
    ///     <MyNamespace:MessagePopup/>
    ///
    /// </summary>
    public class MessagePopup : UserControl
    {
        public static readonly DependencyProperty BusinessTypeProperty =
         DependencyProperty.Register(nameof(BusinessType), typeof(string), typeof(MessagePopup), new PropertyMetadata(string.Empty));
        /// <summary>
        /// 業(yè)務(wù)類型
        /// </summary>
        public string BusinessType
        {
            get { return (string)GetValue(BusinessTypeProperty); }
            set { SetValue(BusinessTypeProperty, value); }
        }

        public static readonly DependencyProperty SecondsProperty =
            DependencyProperty.Register(nameof(Seconds), typeof(string), typeof(MessagePopup), new PropertyMetadata(string.Empty));
        /// <summary>
        /// 秒數(shù)
        /// </summary>
        public string Seconds
        {
            get { return (string)GetValue(SecondsProperty); }
            set { SetValue(SecondsProperty, value); }
        }

        static MessagePopup()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(MessagePopup), new FrameworkPropertyMetadata(typeof(MessagePopup)));
        }
    }
}
  • 自定義控件樣式

下面的樣式使用 ControlTemplate 自定義的控件樣式,其中的 Button 按鈕是不能進(jìn)行事件綁定的,當(dāng)然命令綁定也是不行的。

<Application
    x:Class="assembly.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:assembly"
    StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <!--#region-->
            <Style x:Key="popup" TargetType="{x:Type local:MessagePopup}">
                <Setter Property="Height" Value="436" />
                <Setter Property="Width" Value="840" />
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type local:MessagePopup}">
                            <Grid>
                                <Grid.Background>
                                    <ImageBrush ImageSource="pack://application:,,,/images/bg-Tips.png" />
                                </Grid.Background>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="0.7*" />
                                    <RowDefinition Height="Auto" />
                                    <RowDefinition />
                                </Grid.RowDefinitions>
                                <Grid Grid.Row="0" Margin="55,0">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="0.5*" />
                                        <RowDefinition />
                                    </Grid.RowDefinitions>
                                    <Button
                                        Width="100"
                                        Height="40"
                                        Margin="0,20,0,0"
                                        HorizontalAlignment="Right"
                                        Tag="0">
                                        <Button.Template>
                                            <ControlTemplate>
                                                <StackPanel VerticalAlignment="Center" Orientation="Horizontal">
                                                    <Image Source="pack://application:,,,/images/ico-close.png" />
                                                    <TextBlock
                                                        Margin="5,0,0,0"
                                                        VerticalAlignment="Center"
                                                        FontSize="28"
                                                        FontWeight="Black"
                                                        Foreground="#7582CC"
                                                        Text="關(guān)閉" />
                                                </StackPanel>
                                            </ControlTemplate>
                                        </Button.Template>
                                    </Button>
                                    <StackPanel
                                        Grid.Row="1"
                                        HorizontalAlignment="Center"
                                        VerticalAlignment="Center"
                                        Orientation="Horizontal">
                                        <TextBlock
                                            FontSize="42"
                                            FontWeight="Black"
                                            Text="" />
                                        <TextBlock
                                            FontSize="42"
                                            FontWeight="Black"
                                            Foreground="#F95A00"
                                            Text="{TemplateBinding BusinessType}" />
                                        <TextBlock
                                            FontSize="42"
                                            FontWeight="Black"
                                            Text="" />
                                    </StackPanel>
                                </Grid>
                                <Line
                                    Grid.Row="1"
                                    Margin="80,0"
                                    Stroke="#8DB2BD"
                                    StrokeDashArray="2,2"
                                    StrokeThickness="4"
                                    X1="0"
                                    X2="650" />
                                <Grid Grid.Row="2" Margin="55,0">
                                    <Grid.RowDefinitions>
                                        <RowDefinition />
                                        <RowDefinition />
                                    </Grid.RowDefinitions>
                                    <Grid Grid.Row="0" Margin="75,0">
                                        <StackPanel
                                            Margin="0,30,0,0"
                                            VerticalAlignment="Center"
                                            Orientation="Horizontal">
                                            <TextBlock
                                                VerticalAlignment="Center"
                                                FontSize="32"
                                                Foreground="#002C86"
                                                Text="" />
                                            <Image
                                                Height="40"
                                                Margin="20,0"
                                                Source="pack://application:,,,/images/ico-arrow.png" />
                                            <Button
                                                Width="180"
                                                Height="50"
                                                Tag="1">
                                                <Button.Template>
                                                    <ControlTemplate>
                                                        <Border Background="#DDE2FF" CornerRadius="5">
                                                            <StackPanel
                                                                Height="40"
                                                                HorizontalAlignment="Center"
                                                                VerticalAlignment="Center"
                                                                Orientation="Horizontal">
                                                                <Image Source="pack://application:,,,/images/ico-filer.png" />
                                                                <TextBlock
                                                                    Margin="5,0,0,0"
                                                                    VerticalAlignment="Center"
                                                                    FontSize="28"
                                                                    FontWeight="Black"
                                                                    Foreground="#7582CC"
                                                                    Text="跳轉(zhuǎn)頁面" />
                                                            </StackPanel>
                                                        </Border>
                                                    </ControlTemplate>
                                                </Button.Template>
                                            </Button>
                                        </StackPanel>
                                    </Grid>
                                    <Grid Grid.Row="1">
                                        <StackPanel
                                            Margin="0,20,0,0"
                                            HorizontalAlignment="Center"
                                            VerticalAlignment="Center"
                                            Orientation="Horizontal">
                                            <TextBlock
                                                FontSize="38"
                                                Foreground="#FFD873"
                                                Text="{TemplateBinding Seconds}" />
                                            <TextBlock
                                                FontSize="38"
                                                Foreground="#FFD873"
                                                Text="" />
                                            <TextBlock
                                                Margin="10,0,0,0"
                                                VerticalAlignment="Bottom"
                                                FontSize="32"
                                                Foreground="#FFFFFF"
                                                Text="" />
                                        </StackPanel>
                                    </Grid>
                                </Grid>
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
            <!--#endregion-->
        </ResourceDictionary>
    </Application.Resources>
</Application>
  • 效果

【W(wǎng)PF】附加事件

注冊使用附加事件

使用該自定義控件時,為其注冊 Button.Click 事件,屬于原生路由事件。對應(yīng)其用方法可以得出,該事件觸發(fā)的是 Button 元素的 Click 事件。

簡單來說就是,只有自定義控件中的 Button 元素才能觸發(fā)當(dāng)前的 Click 事件。(附加事件用法)

<Window
    x:Class="assembly.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:comm="clr-namespace:assembly"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="900"
    Height="550"
    WindowStartupLocation="CenterScreen"
    mc:Ignorable="d">
    <Grid>
        <comm:MessagePopup
            x:Name="popup"
            Width="840"
            Height="436"
            Button.Click="popup_Click"
            Style="{StaticResource popup}"
            Visibility="Visible" />
    </Grid>
</Window>

元素樹中聲明了兩個 Buuton 這里暫且通過 Button 的 Tag 值來區(qū)分,不僅限于 Tag。

private void popup_Click(object sender, RoutedEventArgs e)
{
    string tag = (string)((FrameworkElement)e.OriginalSource).Tag;
    if (tag == "0")
    {
        MessageBox.Show("是關(guān)閉按鈕");
        //CloseTimer();
    }
    else if (tag == "1")
    {
        MessageBox.Show("是跳轉(zhuǎn)按鈕");
    }
}
  • 效果

【W(wǎng)PF】附加事件文章來源地址http://www.zghlxwxcb.cn/news/detail-449951.html

到了這里,關(guān)于【W(wǎng)PF】附加事件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 完美解決Window11附加表時: Microsoft SQL Server Management Studio-附加數(shù)據(jù)庫時出錯。有關(guān)詳細(xì)信息,請單擊“消息”列中
  • unity多人聯(lián)機(jī)(Mirror插件)有史以來最全的基礎(chǔ)教程(附加報錯提示和官方手冊修改)

    unity多人聯(lián)機(jī)(Mirror插件)有史以來最全的基礎(chǔ)教程(附加報錯提示和官方手冊修改)

    目錄 START?? (??ヮ?)?Mirror簡介?(?ヮ??) 組件介紹: 組件1:NetworkManager 組件2:NetworkManagerHUD(需要配合Network Manager組件) 組件3:NetworkIdentity 組件4:network discoverynetwork discoveryHUD 錯誤注意: 最后,對手冊內(nèi)容的一點修改: 今天我們只講代碼和組件,大家拿小本本記好了,字

    2024年02月02日
    瀏覽(28)
  • 【Blender】使用 Microsoft Visual Studio Code 作為外部 IDE 來編寫 Blender 腳本/附加組件

    【Blender】使用 Microsoft Visual Studio Code 作為外部 IDE 來編寫 Blender 腳本/附加組件

    Blender 有自己的內(nèi)置文本編輯器,用于編寫腳本和附加組件,但在外部 IDE 中開發(fā)它們非常方便,為用戶提供更多功能,例如自動完成、語法高亮、與版本控制系統(tǒng)和其他工具的集成使開發(fā)更快更容易。 這些 IDE 之一是 Microsoft 的 Visual Studio Code。這是一個免費的通用環(huán)境 ,支

    2024年02月04日
    瀏覽(41)
  • 什么是網(wǎng)絡(luò)附加存儲 (NAS),它是如何工作的

    什么是網(wǎng)絡(luò)附加存儲 (NAS)? 網(wǎng)絡(luò)附加存儲是在網(wǎng)絡(luò)范圍內(nèi)工作的文件級存儲,使異構(gòu)設(shè)備能夠訪問非結(jié)構(gòu)化數(shù)據(jù)文件,例如視頻、音頻、網(wǎng)站、文本文件和 Microsoft Office 文檔。NAS 的優(yōu)勢包括低成本實施、易于訪問以及支持高容量和 可擴(kuò)展性。它還提供容錯功能和內(nèi)置的安全

    2024年02月04日
    瀏覽(20)
  • WPF編程--helix-toolkit 官方SimpleDemo

    WPF編程--helix-toolkit 官方SimpleDemo

    視頻:??WPF helix-toolkit 官方SimpleDemo_嗶哩嗶哩_bilibili 源碼:?https://github.com/liugang198409/WpfDemo/tree/master/3DSimpleDemo Visual Studio 2019 + .NET Framework 4.8.1 HelixToolkit HelixToolkit.wpf ?

    2024年02月11日
    瀏覽(19)
  • WPF鼠標(biāo)、鍵盤、拖拽事件、用行為封裝事件

    WPF鼠標(biāo)、鍵盤、拖拽事件、用行為封裝事件

    本文主要介紹了WPF中常用的鼠標(biāo)事件、鍵盤事件以及注意事項,同時使用一個案例講解了拓展事件。除此之外,本文還講述如何用行為(Behavior)來封裝事件。 Windows中的事件通過消息機(jī)制來完成,也就是Windows系統(tǒng)來捕獲用戶輸入(如鼠標(biāo)點擊、鍵盤輸入),然后Windows發(fā)送一

    2024年01月23日
    瀏覽(21)
  • Visual Studio中C++部分的官方文檔鏈接【微軟(Microsoft)所有產(chǎn)品的官方文檔鏈接】

    Visual Studio中C++部分的官方文檔鏈接【微軟(Microsoft)所有產(chǎn)品的官方文檔鏈接】

    目前(2022年07月),微軟官方網(wǎng)站上關(guān)于Visual Studio的文檔,最老的版本也是VS2015了,如下圖所示: 微軟所有產(chǎn)品的文檔目錄: 中文版:https://docs.microsoft.com/zh-CN/documentation/ 英文版:https://docs.microsoft.com/en-us/documentation/ Visual Studio中C++部分的官方文檔: 中文版:https://docs.microso

    2024年02月07日
    瀏覽(26)
  • WPF——事件綁定命令

    WPF——事件綁定命令

    我們都知道WPF中的命令在結(jié)合MVVM模式的框架使用之后(框架重新實現(xiàn)了ICommand),可以解耦。但并不是所有控件都可以綁定命令的,比如TextBox、ComboBox等。在使用這類控件時,如果你想讓它的某個事件激發(fā)時調(diào)用ViewModel中的方法,往往需要把ViewModel中的方法暴露給View,然后在

    2024年02月05日
    瀏覽(95)
  • Microsoft Azure和WPF實現(xiàn)人臉檢測

    Microsoft Azure和WPF實現(xiàn)人臉檢測

    在本文中,詳解如何使用Microsoft Azure和WPF技術(shù)的幫助下使用實現(xiàn)人臉API應(yīng)用程序。該應(yīng)用程序檢測人臉圖像,顯示每張臉周圍的紅框,以及通過將光標(biāo)移動到框來顯示每張臉的描述的狀態(tài)欄。 先決條件 在 Azure 門戶中創(chuàng)建人臉 API。 在 WPF 應(yīng)用程序中訪問和管理人臉 API 密鑰。

    2024年02月09日
    瀏覽(17)
  • WPF之Microsoft.Toolkit.Mvvm(一)

    WPF之Microsoft.Toolkit.Mvvm(一)

    WPF編程中使用MVVM框架開發(fā)步驟。 第一步: 安裝package從nuget: Microsoft.Toolkit.MVVM 和Microsoft.Xaml.Behaviors.Wpf和PropertyChanged.Fody 入下圖所示: 第二步:引用命名空間、新建View文件夾、ViewModel文件夾 在Model和ViewModel中引入命名空間如下圖所示: ????????????????????????

    2024年02月04日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包