所以在事件处理上,与WinForms是不太一样的,它所采用的机制是所谓的RoutedEvent,即事件路由。 注册路由事件时,我们可以选择不同的路由策略。 public void AddHandler( RoutedEvent routedEvent, Delegate handler, bool handledEventsToo ) handledEventsToo
随手理了理 RoutedEvent 相关的几个知识点:
here: CommandDevice.PostProcessInput And the key code is here: 1 2 3 4 5 6 7 if (e.StagingItem.Input.RoutedEvent == Keyboard.KeyUpEvent || e.StagingItem.Input.RoutedEvent == Mouse.MouseUpEvent || e.StagingItem.Input.RoutedEvent == Keyboard.GotKeyboardFocusEvent || e.StagingItem.Input.RoutedEvent == Keyboard.LostKeyboardFocusEvent
可以尝试修改 RoutedEvent 属性 _lastEventArgs.RoutedEvent = PreviewTouchDownEvent; System.Windows.Input.InputManager.Current.ProcessInput (_lastEventArgs); _lastEventArgs.RoutedEvent = PreviewTouchUpEvent; System.Windows.Input.InputManager.Current.ProcessInput lastEventArgs) 替换为 ((UIElement)_lastEventArgs.Source).RaiseEvent(_lastEventArgs) 请看代码 _lastEventArgs.RoutedEvent lastEventArgs); //System.Windows.Input.InputManager.Current.ProcessInput(_lastEventArgs); _lastEventArgs.RoutedEvent lastEventArgs); //System.Windows.Input.InputManager.Current.ProcessInput(_lastEventArgs); _lastEventArgs.RoutedEvent
DoubleAnimationUsingKeyFrames> </Storyboard> </Window.Resources> <Window.Triggers> <EventTrigger RoutedEvent > </Button.RenderTransform> <Button.Triggers> <EventTrigger RoutedEvent > </Button.RenderTransform> <Button.Triggers> <EventTrigger RoutedEvent
private void KeyEvent(object sender, KeyEventArgs e) { string message = "Event:" + e.RoutedEvent TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e) { string message = "Event:" + e.RoutedEvent TextBox_TextChanged(object sender, TextChangedEventArgs e) { string message = "Event:" + e.RoutedEvent
if (e.StagingItem.Input.RoutedEvent == Keyboard.KeyUpEvent || e.StagingItem.Input.RoutedEvent == Mouse.MouseUpEvent || e.StagingItem.Input.RoutedEvent == Keyboard.GotKeyboardFocusEvent || e.StagingItem.Input.RoutedEvent
</Border> <ControlTemplate.Triggers> <EventTrigger RoutedEvent </BeginStoryboard> </EventTrigger> <EventTrigger RoutedEvent </BeginStoryboard> </EventTrigger> <EventTrigger RoutedEvent </BeginStoryboard> </EventTrigger> <EventTrigger RoutedEvent </BeginStoryboard> </EventTrigger> <EventTrigger RoutedEvent
{ } 在笔事件模块里面定义了路由事件,表示笔的开始写和写完成的事件 public static class InkEvents { public static readonly RoutedEvent public class InkStartedRoutedEventArgs : RoutedEventArgs { public InkStartedRoutedEventArgs(RoutedEvent routedEvent) : base(routedEvent) { } } 这里的细节是定义自己的 InkStartedRoutedEventArgs 这样可以在后续业务修改的时候方便添加属性
Property="Opacity" Value="1.0" /> </Trigger.Setters> </Trigger> <EventTrigger RoutedEvent /BeginStoryboard> </EventTrigger.Actions> </EventTrigger> <EventTrigger RoutedEvent
</ToggleButton.Template> <ToggleButton.Triggers> <EventTrigger RoutedEvent </BeginStoryboard> </EventTrigger> <EventTrigger RoutedEvent
> </Trigger> <EventTrigger RoutedEvent </BeginStoryboard> </EventTrigger> <EventTrigger RoutedEvent
</Image.RenderTransform> <Image.Triggers> <EventTrigger RoutedEvent
自定义路由事件 分三步: ①声明并注册路由事件 public static readonly RoutedEvent ButtonClickEvent = EventManager.RegisterRoutedEvent
); set => SetValue(CustomProperty, value); } // 自定义事件 public static readonly RoutedEvent <RoutedEventArgs> CustomEvent = RoutedEvent.Register<MyUserControl, RoutedEventArgs>("CustomEvent
/// public static readonly RoutedEvent ReportTimeEvent = EventManager.RegisterRoutedEvent
new PropertyMetadata(default, OnTitlePropertyChanged)); public static readonly RoutedEvent RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(NotifyIcon)); public static readonly RoutedEvent Mouse.PrimaryDevice, Environment.TickCount, button) { RoutedEvent Mouse.PrimaryDevice, Environment.TickCount, button) { RoutedEvent
TranslateTransform Y="-90" /> </TextBlock.RenderTransform> <FrameworkElement.Triggers> <EventTrigger RoutedEvent <TranslateTransform /> </TextBlock.RenderTransform> <FrameworkElement.Triggers> <EventTrigger RoutedEvent
Foreground" Value="SkyBlue"/> <Style.Triggers> <EventTrigger RoutedEvent EventTrigger.Actions> </EventTrigger> <EventTrigger RoutedEvent
; } set { SetValue(ContentProperty, value); } } public static readonly RoutedEvent <RoutedEventArgs> ClickEvent = RoutedEvent.Register<TemplatedControl1, RoutedEventArgs>(nameof