WPF事件中的冒泡路由事件
来源:互联网 发布:手机淘宝怎么看淘友 编辑:程序博客网 时间:2024/05/02 00:44
wpf中的控件都直接或者间接继承自UIElement ,继承自它将拥有MouseUp和MouseDown两个方法,冒泡路由事件利用了控件都有这个方法的特性。单击一个元素,会触发他的单击事件,然后触发他的父元素,依次往上一级,直到顶级元素(一般为window)。附上代码
布局xaml:
<Window x:Class="冒泡路由事件.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:冒泡路由事件" mc:Ignorable="d" Title="MainWindow" Height="450" Width="329" MouseUp="SomethingClicked"> <Grid Margin="3" MouseUp="SomethingClicked"> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition Height="*"/> <RowDefinition Height="auto"/> <RowDefinition Height="auto"/> </Grid.RowDefinitions> <Label Margin="5" Grid.Row="0" HorizontalAlignment="Left" Background="AliceBlue" BorderBrush="Black" BorderThickness="1" MouseUp="SomethingClicked"> <StackPanel MouseUp="SomethingClicked"> <TextBlock MouseUp="SomethingClicked">Image and Text Lable</TextBlock> <TextBlock MouseUp="SomethingClicked">Courtesy of the Stackpanel</TextBlock> </StackPanel> </Label> <ListBox Grid.Row="1" MouseUp="SomethingClicked" Name="listbox" Margin="5"></ListBox> <CheckBox Grid.Row="2" Margin="5" Name="checkbox">Hand first event</CheckBox> <Button Grid.Row="3" Margin="5" Padding="3" HorizontalAlignment="Right" Name="btn" Click="btn_Click">Clear list</Button> </Grid></Window>
namespace 冒泡路由事件{ /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { protected int eventcounter = 0; public MainWindow() { InitializeComponent(); } private void SomethingClicked(object sender, MouseButtonEventArgs e) { eventcounter++; //计数加一 string messages = "#" + eventcounter + ":\n" + "Sender:" + sender + "\n" + "source:" + e.Source + "\n" + "original:" + e.OriginalSource + "\n"; listbox.Items.Add(messages); e.Handled = (Boolean)checkbox.IsChecked; //选中就handled住事件,不路由 } private void btn_Click(object sender, RoutedEventArgs e) { listbox.Items.Clear(); eventcounter = 0; } }}
为控件添加统一的鼠标抬起事件SomethingClicked,在listbox中展示出事件发生的对象,源对象
效果如下:
可以看出冒泡的过程。
0 0
- WPF事件中的冒泡路由事件
- WPF中的路由事件
- 了解 WPF 中的路由事件和命令
- 了解 WPF 中的路由事件和命令
- 了解 WPF 中的路由事件和命令
- WPF:路由事件
- wpf路由事件
- WPF路由事件
- WPF 路由事件
- WPF之路由事件
- WPF学习--路由事件
- WPF路由事件
- WPF笔记-路由事件
- WPF自定义路由事件
- wpf 理解路由事件
- WPF自定义路由事件
- WPF中的事件(二)- 自定义路由事件
- WPF冒泡事件
- Spring MVC DispatcherServlet
- android ExpandableListView三级菜单的使用
- webuploader 接收后台返回中文字符乱码
- Lua基础[持续更新]
- 2016.7.15感想
- WPF事件中的冒泡路由事件
- 1. Two Sum QuestionEditorial Solution My Submissions
- 自动计算UILabel的宽度或则高度
- 加载dialog
- Spring MVC 教程,快速入门,深入分析
- vi命令
- Windows编程下, ANSI、UTF8、Unicode之间的转换
- openssl进行非对称加密和对称加密的php示例
- sqlite数据库自动升级设计