C# RoutedEventHandlerde用法 给个详细
1个回答
展开全部
表示将处理各种路由事件的方法,这些路由事件不包含除所有路由事件共有数据之外的其他特定事件数据。
RoutedEventHandler 委托用于不在事件数据内报告事件特定信息的任何路由事件。 这类路由事件有很多;显著示例包括 Click 和 Loaded。
与一般 common language runtime (CLR) 事件相比,为路由事件编写处理程序时最值得注意的区别是,不能将事件的 sender(一种元素,在此元素处附加和调用处理程序)视为必须是事件的源。 在事件数据中,源被报告为属性(Source)。 在通过元素树遍历路由事件的过程中,sender 和 Source 之间的区别是路由到不同元素的事件的结果。
如果您特意对直接或冒泡路由事件不感兴趣,并只想处理首先引发路由事件的元素上的路由事件,则您可以使用 sender 或 Source 进行对象引用。 在这种情况下,sender 和 Source 是相同的对象。
如果您确实想利用路由事件的固有功能,并相应地编写您的处理程序,则编写事件处理程序时,您将使用的事件数据的两个最重要属性为 Source 和 Handled。
对于输入事件和 WPF 控件类的某些组合,引发事件的元素不是有机会处理该事件的第一个元素。 如果输入事件有事件的预览版,则元素树的根具有第一机会,并可在共享事件数据中将 Handled 设置为 true,还可影响如何将输入事件报告至其事件路由中的剩余元素。 预览处理行为可能使特定路由事件看起来未像所希望地那样被引发。 有关更多信息,请参见预览事件和输入概述。
XAML
<Button Click="HandleClick">Button 1</Button>
C#
void HandleClick(object sender, RoutedEventArgs e)
{
// You must cast the sender object as a Button element, or at least as FrameworkElement, to set Width
Button srcButton = e.Source as Button;
srcButton.Width = 200;
}
RoutedEventHandler 委托用于不在事件数据内报告事件特定信息的任何路由事件。 这类路由事件有很多;显著示例包括 Click 和 Loaded。
与一般 common language runtime (CLR) 事件相比,为路由事件编写处理程序时最值得注意的区别是,不能将事件的 sender(一种元素,在此元素处附加和调用处理程序)视为必须是事件的源。 在事件数据中,源被报告为属性(Source)。 在通过元素树遍历路由事件的过程中,sender 和 Source 之间的区别是路由到不同元素的事件的结果。
如果您特意对直接或冒泡路由事件不感兴趣,并只想处理首先引发路由事件的元素上的路由事件,则您可以使用 sender 或 Source 进行对象引用。 在这种情况下,sender 和 Source 是相同的对象。
如果您确实想利用路由事件的固有功能,并相应地编写您的处理程序,则编写事件处理程序时,您将使用的事件数据的两个最重要属性为 Source 和 Handled。
对于输入事件和 WPF 控件类的某些组合,引发事件的元素不是有机会处理该事件的第一个元素。 如果输入事件有事件的预览版,则元素树的根具有第一机会,并可在共享事件数据中将 Handled 设置为 true,还可影响如何将输入事件报告至其事件路由中的剩余元素。 预览处理行为可能使特定路由事件看起来未像所希望地那样被引发。 有关更多信息,请参见预览事件和输入概述。
XAML
<Button Click="HandleClick">Button 1</Button>
C#
void HandleClick(object sender, RoutedEventArgs e)
{
// You must cast the sender object as a Button element, or at least as FrameworkElement, to set Width
Button srcButton = e.Source as Button;
srcButton.Width = 200;
}
参考资料: http://msdn.microsoft.com/zh-cn/library/system.windows.routedeventhandler.aspx
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询