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

  • 相关阅读:
    【BZOJ 4151 The Cave】
    【POJ 3080 Blue Jeans】
    【ZBH选讲·树变环】
    【ZBH选讲·拍照】
    【ZBH选讲·模数和】
    【CF Edu 28 C. Four Segments】
    【CF Edu 28 A. Curriculum Vitae】
    【CF Edu 28 B. Math Show】
    【CF Round 439 E. The Untended Antiquity】
    【CF Round 439 C. The Intriguing Obsession】
  • 原文地址:https://www.cnblogs.com/Seek-logic/p/3413795.html
Copyright © 2011-2022 走看看