zoukankan      html  css  js  c++  java
  • WPF 附件路由事件

    public class Person

        {

            public static readonly RoutedEvent NameChangedEvent = EventManager.RegisterRoutedEvent("NameChanged", RoutingStrategy.Bubble,typeof(RoutedEventHandler),typeof(Person));

            //为界面添加路由侦听

            public static void AddNameChangedHandle(DependencyObject d,RoutedEventHandler h)

            {

                UIElement e = d as UIElement;

                if(null!=e)

                {

                    e.AddHandler(NameChangedEvent, h);

                }

            }

            //移除侦听

            public static void RemoveNameChangedHandle(DependencyObject d,RoutedEventHandler h)

            {

                UIElement e = d as UIElement;

                if(null!=e)

                {

                    e.RemoveHandler(NameChangedEvent,h);

                }

            }

            public int Id { get; set; }

            public string Name { get; set; }

        }

    <Window x:Class="WpfApplication1.Window27"

            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

            Title="Window27" Height="272" Width="349">

        <Grid x:Name="gd_main">

            <Button Content="Button"  x:Name="button1" Width="75" Height="75" Margin="10" Click="button1_Click" />

        </Grid>

    </Window>

     public partial class Window27 : Window

        {

            public Window27()

            {

                InitializeComponent();

                //为外层Grid添加路由事件

                Person.AddNameChangedHandle(this.gd_main, new RoutedEventHandler(PersonNameChanged));

            }

            private void PersonNameChanged(object obj, RoutedEventArgs e)

            {

                MessageBox.Show((e.OriginalSource as Person).Name);

            }

            private void button1_Click(object sender, RoutedEventArgs e)

            {

                Person persion = new Person();

                persion.Id = 0;

                persion.Name = "Darren";

                //准备事件消息并发送路由事件

                RoutedEventArgs arg = new RoutedEventArgs(Person.NameChangedEvent, persion);

                this.button1.RaiseEvent(arg);

            }

        }

  • 相关阅读:
    List of Examples Converting XNA 3.1 to XNA 4.0
    XNA程序开发常用到的一些代码汇总
    在WCF中使用Flag Enumerations
    能飞过海洋的却只有海鸥【转载】
    Variant类型转换成CString代码
    一种漂亮的自绘菜单
    转 在OpenCV中用cvCalibrateCamera2进行相机标定(附程序)
    COM组件设计与应用之VC6中用ATL写组件
    vc的菜单,工具栏
    (餐饮)写一些开店的经验转
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14856153.html
Copyright © 2011-2022 走看看