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应用程序?
您必须为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);
}