WPF应用程序自定义路由事件

本文关键字:事件 路由 自定义 应用程序 WPF | 更新日期: 2023-09-27 18:13:27

我想建立一个非常简单的东西,像这样:

<EventTrigger RoutedEvent="MyCustomEvent">
     <BeginStoryboard>
         <Storyboard>
             <DoubleAnimation Duration="00:00:00.1" Storyboard.TargetProperty="Opacity" To="1" />
         </Storyboard>
     </BeginStoryboard>
</EventTrigger>

所以我可以在代码中这样调用:

MyCustomEvent.trigger()

我如何做到这一点,简单和快速,在c#中,在WPF应用程序?

WPF应用程序自定义路由事件

您必须为RoutedEvent使用扩展方法,并使用UIElement.RaiseEvent方法。

示例:

public static class EventHandlerExtension
{
    public static void TriggerThisEvent(this RoutedEvent routedEvt, FrameworkElement felem)
    {
        RoutedEventArgs args = new RoutedEventArgs(routedEvt, felem);
        felem.RaiseEvent(args);
    }
}
使用

XAML

   <TextBox x:Name="Tbx" Text="type something here...">
        <TextBox.Triggers>
            <EventTrigger RoutedEvent="LostFocus">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Duration="00:00:03" Storyboard.TargetProperty="Opacity" To="0" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </TextBox.Triggers>
    </TextBox>
<<p> 代码/em>
    private void Btn1_Click(object sender, RoutedEventArgs e)
    {
        TextBox.LostFocusEvent.TriggerThisEvent(Tbx);
    }