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上的源头。

  • 相关阅读:
    H5页面富文本展示图片之间存在空隙
    如何关闭eslint语法校验
    K8S service详解
    vim添加或删除多行注释
    K8S 弹性伸缩
    Load高问题排查
    Dockerfile CMD和ENTRYPOINT
    nginx配置
    sed命令
    Pod排错指南
  • 原文地址:https://www.cnblogs.com/Seek-logic/p/3413795.html
Copyright © 2011-2022 走看看