路由事件中级案例

前端:

    <Grid Name="grid1" local:TimeReportButton.TimeReport="TimeReportHandler">
        <Grid Name="grid2" local:TimeReportButton.TimeReport="TimeReportHandler">
            <StackPanel Name="stackP1" local:TimeReportButton.TimeReport="TimeReportHandler">
                <ListBox Name="listBox1" local:TimeReportButton.TimeReport="TimeReportHandler"/>
                <local:TimeReportButton x:Name="btn1" Width="100" Height="30" Content="OK" TimeReport="TimeReportHandler"/>
            </StackPanel>
        </Grid>
    </Grid>

后台:

    public partial class Window2 : Window
    {
        public Window2()
        {
            InitializeComponent();
        }

        public void TimeReportHandler(object source, ReportTimeEventArgs2 e)
        {
            if (e.OriginalSource != null)
            {
                listBox1.Items.Add((source as FrameworkElement).Name);
            }
        }
    }

    public class ReportTimeEventArgs2 : RoutedEventArgs
    {
        public DateTime ClickTime
        {
            get;set;
        }

        public ReportTimeEventArgs2(RoutedEvent routedEvent,object source)
            : base(routedEvent,source)
        {
        }
    }

    public class TimeReportButton : Button
    {
        public static readonly RoutedEvent TimeReportEvent = EventManager.RegisterRoutedEvent("TimeReport", RoutingStrategy.Bubble, typeof(EventHandler<ReportTimeEventArgs2>), typeof(TimeReportButton));

        public event RoutedEventHandler TimeReport
        {
            add
            {
                this.AddHandler(TimeReportEvent, value);
            }
            remove
            {
                this.RemoveHandler(TimeReportEvent, value);
            }
        }

        public TimeReportButton()
            : base()
        {
        }

        protected override void OnClick()
        {
            base.OnClick();
            ReportTimeEventArgs2 reportTimeArg = new ReportTimeEventArgs2(TimeReportEvent, this);
            reportTimeArg.ClickTime = DateTime.Now;
            this.RaiseEvent(reportTimeArg);
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值