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

        在WPF中有许多控件有他们自己的特殊的事件。按钮就是一个例子——它添加了 Click 事件,而其他任何类都没有定义该事件。

        这回导致两难的境地。假设在 StackPanel 面板中包装了一堆按钮,并且希望在一个事件处理程序中处理所有这些按钮的单击事件。粗略的方法是将每个按钮 Click 事件都注册到同一个事件处理方法中。但是 Click 事件支持事件冒泡,从而提供了更好的一种选择。可以通过处理更高层次的元素的 Click 事件(如包含按钮的 StackPanel 面板)来处理所有的按钮单击事件。

        这里会遇到一个问题,在StackPanel面板中并没有Click事件,正如上所说“按钮就是一个例子——它添加了 Click 事件,而其他任何类都没有定义该事件。”,所以 XAML 解析器会解释成一个错误。解决方案是以“类名.事件名”的形式使用不同的关联事件语法。下面是示例:

            <StackPanel Name="panel1" Button.Click="StackPanel_Click_1"  Margin="5">
                <Button Name="cmd1" Tag="1">Command 1</Button>
                <Button Name="cmd2" Tag="2">Command 2</Button>
                <Button Name="cmd3" Tag="3">Command 3</Button>
            </StackPanel>

        现在事件处理程序就可以接收到 StackPanel 面板中包含的所有按钮单击事件了。

        也可以在代码中关联附加事件,但是需要使用 UIElement.AddHandler() 方法,而不能使用 += 运算符语法。下面是一个示例(该示例假设 StackPanle 面板已经被命名为 pnlButtons ):

    pnlButtons.AddHandler(Button.Click, new RoutedEventHandler(StackPanel_Click_1));

        在 StackPanel_Click_1 事件处理方法中进行处理程序。

    下面是一个完整的例子:

    XAML

    <Window x:Class="_1016_AppendEvent.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
            <StackPanel Name="panel1" Button.Click="StackPanel_Click_1"  Margin="5">
                <Button Name="cmd1" Tag="1">Command 1</Button>
                <Button Name="cmd2" Tag="2">Command 2</Button>
                <Button Name="cmd3" Tag="3">Command 3</Button>
            </StackPanel>
    </Window>

    C#:

            private void StackPanel_Click_1(object sender, RoutedEventArgs e)
            {
                MessageBox.Show(e.Source.ToString());
            }

    源码下载:http://files.cnblogs.com/andrew-blog/1016_AppendEvent.rar

    开发工具:VS2012

    参考:http://www.wxzzz.com/?id=129

  • 相关阅读:
    使用活字格搭建企业级web应用--办公用品管理系统
    怪兽级性能,用代码玩转Excel!葡萄城强势发布Spread表格组件
    无需编码,轻松搭建企业采购管理软件
    NHibernate变的简单
    Easyui + jQuery表单提交 给 Controller patr1
    Easyui datagrid 批量编辑和提交
    C# 网络编程 Part.1
    提高你开发效率的十五个Visual Studio 2010使用技巧
    System.IO
    C#路径,文件,目录,I/O常见操作
  • 原文地址:https://www.cnblogs.com/andrew-blog/p/WPF_AppendEvent.html
Copyright © 2011-2022 走看看