C# 为什么XAML不是AddHandler的等价物?

C# 为什么XAML不是AddHandler的等价物?,c#,xaml,win-universal-app,C#,Xaml,Win Universal App,我正在将WPF应用程序移植到Windows Universal。我想向控件添加相同的MouseLeftButtonDown处理程序。它们似乎已被抽头事件所取代。但是,当我添加这样的处理程序时: <Border Tapped="brd_Tapped" /> 这是可行的,但当我动态生成了ListViewItem之类的项目时,这会变得更加复杂 为什么XAML处理程序不像WPF中的codebehind中的AddHandler那样做呢?边框内的其他控件可能已经在点击事件到达边框之前处理了它。

我正在将WPF应用程序移植到Windows Universal。我想向控件添加相同的MouseLeftButtonDown处理程序。它们似乎已被抽头事件所取代。但是,当我添加这样的处理程序时:

<Border Tapped="brd_Tapped" />
这是可行的,但当我动态生成了ListViewItem之类的项目时,这会变得更加复杂


为什么XAML处理程序不像WPF中的codebehind中的AddHandler那样做呢?

边框内的其他控件可能已经在点击事件到达边框之前处理了它。(RouteEvent,eventHandler,true)是专门为您想要获取事件的场景而设计的,即使它已经被其他人处理过

AddHandler的行为不是默认行为,因为处理已处理的事件通常不是一个好主意。AddHandler是需要的情况下的一个选项


替换MouseLeftButtonDown的事件取决于具体用途。PointerPressed是比更高级别的抽头事件更接近的模拟。使用哪一个(如果有)取决于您正在尝试做什么。无论哪种方式,您都需要确保有某种方法可以在不使用触摸/鼠标的情况下实现行为。在许多情况下,您最好使用样式化的按钮来获得完整的单击语义,而不是直接处理指针或点击事件。

Hmm,不,这很好。也许你更喜欢指尖。听起来您使用的是VS2015的测试版,所以出现随机故障的几率始终为非零。使用connect.microsoft.com报告错误。@Hans:你能告诉我你在什么软件中看到了这个功能吗?我目前只能在VS2015 RC中打开此项目。所以你认为这是一个bug?
            Brd1.AddHandler(TappedEvent, new TappedEventHandler(Brd_Tapped), true);