- 浏览: 36066 次
- 性别:
- 来自: 北京
文章分类
最新评论
events handle
routed event:
UIElement(all elements inherits from);bubble(冒泡,up to root element),tunnel(隧道,down from root element);
void Handle_RoutedEvent(object sender, RoutedEventArgs e) RoutedEventArgs derives from EventArgs,includes extra information that WPF uses to work its magic;
Name | Description |
Source | The object that raised the event. This is a property you will generally be interested in. It’s useful to note that with routed events this is likely to be different from the sender. |
OriginalSource | This returns original reporting source. That is the object that really raised the event. This property does not change as the event travels along its route. |
Handled | A bool that lets you know if the event has already been handled. You should mark this true in your own handlers. |
RoutedEvent | This identifies the type of event that was raised. Many events have the same signature, and a single handler might be responsible for several events. |
通过 e.Handled = true; 显式中止路由链上的二次触发(见 附件1);
使用场景
building (or compositing) your own custom controls;
attached event(works like attached property)
如
ButtonBase.Click=”StackPanel_Click”
常规格式为Type.EventName,Type is the name of the class that owns the event(见 附件2);
对TextEditor的再完善
<local:TextEditorToolbar x:Name="toolbar"
DockPanel.Dock="Top"
ComboBox.SelectionChanged="TextEditorToolbar_SelectionChanged" />
//MainWindow.xaml.cs
private void TextEditorToolbar_SelectionChanged(object sender,SelectionChangedEventArgs e)
{
//e is a routed event,use OriginalSource to get a reference to the ComboBox
ComboBox source = e.OriginalSource as ComboBox;
if (source == null) return;
switch (source.Name)
{
case "fonts”:
//change the font face break;
case "fontSize”:
//change the font size break;
}
body.Focus();
}
Action<T>
delegate void Action<T>(T obj);
Preview Events
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace PreviewEvents { public partial class Window1 { public Window1() { InitializeComponent(); } private void Handler(object sender, KeyEventArgs e) { bool isPreview = e.RoutedEvent.Name.StartsWith("Preview"); string direction = isPreview ? "v" : "^"; Output.Items.Add(string.Format("{0} {1}", direction, sender.GetType().Name)); if (sender == e.OriginalSource && isPreview) Output.Items.Add("-{bounce}-"); if (sender == this && !isPreview) Output.Items.Add("-end-"); } } } 详见 附件3;
小记:
WPF,a set of composite UI elements;
事件,可写代码的外链接;
路由事件,在wpf中获得了超越普通事件的扩展和增强。
- UnderstandingRoutedEventArgs.rar (38.7 KB)
- 下载次数: 0
- GenericEventHandler.rar (38.1 KB)
- 下载次数: 0
- PreviewEvents.rar (37.9 KB)
- 下载次数: 0
发表评论
-
wpf应用实例
2010-07-24 15:45 1065使用WPF快速创建可拖拽的对象和窗体。 -
业务流的前端,intel终极理想:感应终端环境与任意平面成屏技术
2010-07-08 12:44 1024在欧美等人力成本高 ... -
wpf 研习1-24小时自学wpf16
2010-06-15 23:21 1382Visualizing Lists-displaying mo ... -
wpf 研习1-24小时自学wpf15
2010-06-14 23:25 936deeper into data binding ad ... -
wpf 研习1-24小时自学wpf14
2010-06-13 10:27 1402Resources and Styles 从下图,我们 ... -
wpf 研习1-24小时自学wpf13
2010-06-11 23:04 910Presenters and Views-the Shell ... -
wpf 研习1-24小时自学wpf12
2010-06-11 14:26 770A Contact Manager Choosin ... -
wpf 研习1-24小时自学wpf11
2010-06-10 15:02 971output WPF Document Con ... -
了解WPF中的路由事件和命令
2010-06-09 23:12 1334路由事件浏览 (1)在vs designer中,如在窗口中增 ... -
wpf 研习1-24小时自学wpf10
2010-06-09 16:25 978Commands In WPF, a command is ... -
wpf 研习1-24小时自学wpf8
2010-06-07 16:10 887A real-world program basic ... -
wpf 研习1-24小时自学wpf7
2010-06-07 11:04 848Application deployable file ... -
wpf 研习1-24小时自学wpf6
2010-06-05 17:14 874Data Binding markup extensi ... -
wpf 研习1-24小时自学wpf5
2010-06-05 16:14 1066basic Control Control base ... -
wpf 研习1-24小时自学wpf4
2010-06-05 11:31 668Layout Panel,Decorator; Sy ... -
wpf 研习1-24小时自学wpf3
2010-06-04 19:11 813wpf项目文件 vs->新项目->wpf应用程序 ... -
wpf 研习1-24小时自学wpf2
2010-06-04 15:39 829XAML,既然用户控件是一个大类,那么干脆对这个集合进行统一的 ... -
wpf 研习1-24小时自学wpf1
2010-06-04 12:05 728WPF是微软.net的UI 架构,也是非常重要的框架。 ... -
wpf主要知识点
2010-06-04 10:47 983template,presenter,layout,visua ... -
路由事件
2010-05-17 22:09 651如果我们在一个窗口上增加一个按钮,并且看下它的后置代码,会发现 ...
相关推荐
本文将围绕“wpf 研习1-24小时自学wpf6”这一主题,探讨WPF的核心概念和技术,旨在帮助初学者快速上手并深入理解这一强大的UI框架。 WPF是微软.NET Framework的一部分,它提供了全面的图形系统,包括2D和3D渲染、...
标题 "wpf 研习1-24小时自学wpf7" 提示我们这是一个关于Windows Presentation Foundation(WPF)的学习资源,可能是书籍、课程或教程的一部分,旨在帮助初学者在24小时内掌握WPF的基础知识。WPF是.NET Framework中的...
【标题】:“wpf 研习1-24小时自学wpf8”是指一系列针对Windows Presentation Foundation(WPF)框架的学习教程,旨在帮助初学者在24小时内掌握WPF的基础知识和应用技巧。WPF是.NET Framework的一部分,用于构建...
NULL 博文链接:https://x-dome.iteye.com/blog/684355
对于想要开发Windows应用的学员,WinForms和WPF(Windows Presentation Foundation)的使用也会有所介绍。 在幻灯片部分,可能会包含每章节的重点摘要,清晰的示例图解,以及关键概念的解释,帮助学生更好地吸收和...