<Button.Triggers> <EventTrigger RoutedEvent="Loaded"></EventTrigger> </Button.Triggers> routedevent是个枚举吗?
时间: 2024-06-22 08:02:53 浏览: 138
`<Button.Triggers>` 是 WPF(Windows Presentation Foundation)中的一个元素,它用于在 Button 控件特定事件发生时执行一些操作,如响应按钮被加载(`Loaded`)等。`EventTrigger` 是一个类型的组件,用来触发事件处理程序,这里的 `RoutedEvent` 属性的确是一个枚举类型。
`RoutedEvent` 指定了事件的名称,它是 Windows Presentation Foundation 中所有可路由事件的命名约定。对于 `Loaded` 这个事件,它表示当 Button 或任何包含它的元素完成其初始布局和内容加载时触发。
相关问题
利用wpf写一个loading动画
以下是一个简单的WPF Loading动画的代码:
```xaml
<Window x:Class="LoadingAnimationWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="LoadingAnimationWindow" Height="150" Width="350">
<Grid>
<Ellipse x:Name="Ellipse1" Width="30" Height="30" Fill="LightBlue">
<Ellipse.RenderTransform>
<TranslateTransform X="0" Y="0"/>
</Ellipse.RenderTransform>
<Ellipse.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(Ellipse.RenderTransform).(TranslateTransform.X)"
From="0" To="200" Duration="0:0:1" RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Ellipse.Triggers>
</Ellipse>
<Ellipse x:Name="Ellipse2" Width="30" Height="30" Fill="LightBlue">
<Ellipse.RenderTransform>
<TranslateTransform X="0" Y="0"/>
</Ellipse.RenderTransform>
<Ellipse.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(Ellipse.RenderTransform).(TranslateTransform.X)"
From="0" To="-200" Duration="0:0:1" RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Ellipse.Triggers>
</Ellipse>
</Grid>
</Window>
```
这个Loading动画使用了两个椭圆(Ellipse)来表示动画,每个椭圆都有一个 `TranslateTransform` 作为其渲染变换(Render Transform),并在其 `Loaded` 事件中启动一个 `Storyboard`,使用 `DoubleAnimation` 来改变 `TranslateTransform` 的 X 坐标值,从而实现椭圆的移动。两个椭圆的移动方向相反,从而形成动画效果。
用wpf写一个load等待的漂亮的界面
以下是一个简单的WPF等待界面示例:
```
<Window x:Class="WpfLoadingDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF Loading Demo" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Loading..." Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" Margin="0,40,0,0"/>
<Canvas Grid.Row="1" Grid.Column="1">
<Ellipse Canvas.Left="0" Canvas.Top="0" Width="20" Height="20" Fill="#FF8C8C8C">
<Ellipse.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="ellipse"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(RotateTransform.Angle)"
RepeatBehavior="Forever">
<SplineDoubleKeyFrame KeyTime="0:0:0" Value="0"/>
<SplineDoubleKeyFrame KeyTime="0:0:1" Value="360"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Ellipse.Triggers>
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse x:Name="ellipse" Canvas.Left="0" Canvas.Top="0" Width="20" Height="20" StrokeThickness="5" Stroke="#FF26C6DA"
Fill="Transparent" >
<Ellipse.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="ellipse"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(RotateTransform.Angle)"
RepeatBehavior="Forever">
<SplineDoubleKeyFrame KeyTime="0:0:0" Value="0"/>
<SplineDoubleKeyFrame KeyTime="0:0:1" Value="360"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Ellipse.Triggers>
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse Canvas.Left="0" Canvas.Top="0" Width="20" Height="20" StrokeThickness="5" Stroke="#FF26C6DA"
Fill="Transparent" >
<Ellipse.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="ellipse"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(RotateTransform.Angle)"
RepeatBehavior="Forever">
<SplineDoubleKeyFrame KeyTime="0:0:0" Value="0"/>
<SplineDoubleKeyFrame KeyTime="0:0:1" Value="360"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Ellipse.Triggers>
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
</Canvas>
</Grid>
</Window>
```
这个等待界面由三个重叠的圆组成,中心圆是灰色的,边缘两个圆是蓝色的。圆通过“旋转变换”动画旋转,以创建旋转动画效果。您可以自定义颜色和大小以创建自己的等待界面。