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

    1.如果一个窗体中的所有按钮都执行同一个事件如click事件,则简洁方法如下:

     1 <Grid>
     2    <StackPanel Margin="5" Button.Click="ButtonClick" Focusable="False">
     3       <Button>BubbledLabelClick</Button>
     4       <Button>TunneledKeyPress</Button>
     5       <Button>ButtonMouseUpEvent</Button>
     6       <Button>KeyPressEvents</Button>
     7       <Button>OnlyNumbers</Button>
     8       <Button>KeyModifiers</Button>
     9       <Button>Focus</Button>
    10       <Button>MousePosition</Button>
    11       <Button>DragAndDrop</Button>
    12     </StackPanel>    
    13 </Grid>

    事件处理程序如下:

     1         private void ButtonClick(object sender, RoutedEventArgs e)
     2         {            
     3             //获取当前的Button
     4             Button cmd = (Button)e.OriginalSource;
     5             //根据当前的Button创建一个Window窗体的实例
     6             Type type = this.GetType();
     7             Assembly assembly = type.Assembly;                       
     8             Window win = (Window)assembly.CreateInstance(type.Namespace + "." + cmd.Content);
     9             //显示窗体
    10             win.ShowDialog();
    11         }

    2.wpf中的逻辑树(LogicalTree)和可视树(VisualTree)的区别:LogicalTree的叶子结点是构成用户界面的控件,而VisualTree要连控件中的细微结构也算上。比如TextBlock与Label,其实TextBlock是个轻量型的文本显示框,Label的内部结构中也包含一个TextBlock。
    下面区分一下路由事件中的sender、e.Source、e.OriginalSource,Source事件源激发(raise)的事件在不使用路由事件的话sender跟source是同一对象。首先,路由事件是在VisualTree上传递,RoutedEventArgs有两个属性Source和OriginalSource,这两个属性都表示路由事件传递的起点(即事件消息的源头),只不过Source表示LogicalTree上的消息源头,而OriginalSource则表示VisualTree上的源头。

  • 相关阅读:
    使用Hugo框架搭建博客的过程
    使用Hugo框架搭建博客的过程
    使用Hugo框架搭建博客的过程
    Windows软件包管理工具:Scoop
    Centos8 安装ifconfig(net-tools.x86_64)
    Centos8 重启网卡方法
    使用Visual Studio 2019--调试汇编32位代码的详细步骤
    linux 三剑客之awk总结
    linux 三剑客之sed常用总结
    mysql数据库的笔记
  • 原文地址:https://www.cnblogs.com/Seek-logic/p/3413795.html
Copyright © 2011-2022 走看看