在类MainWindow.xaml.cs中调用EventTrigger RoutedEvent

时间:2016-06-17 08:40:02

标签: c# wpf xaml

我在加载TextBlock时调用了一个EventTrigger:

<TextBlock Name="Hit" Text="Hit!">
 <TextBlock.Triggers>
  <EventTrigger RoutedEvent="TextBlock.Loaded">
   <BeginStoryboard>
    <Storyboard>
       <DoubleAnimation 
       Storyboard.TargetProperty="Opacity"
       From="0" To="1" Duration="0:0:1"/>
    </Storyboard>
   </BeginStoryboard>
  </EventTrigger>
 </TextBlock.Triggers>
</TextBlock>

但我想创建自己的启动器并直接在我的C#类中调用此EventTrigger 有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

我的理解是你需要在文本框加载时调用故事板。

下面的代码对我有用。

的Xaml:

<Window x:Class="WpfApplication6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:WpfApplication6"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>

            <Storyboard x:Key="animation">
                <DoubleAnimation 
       Storyboard.TargetProperty="Opacity"
       From="0" To="1" Duration="0:0:1"/>
            </Storyboard>

    </Window.Resources>

    <Window.DataContext>
        <vm:ViewModel></vm:ViewModel>
    </Window.DataContext>
    <Grid x:Name="grid">
        <StackPanel>
        <TextBlock Name="Hit" Width="200" Height="100" Text="Hit!">          
        </TextBlock>       
        </StackPanel>       
    </Grid>
</Window>

代码:

public MainWindow()
        {
            this.InitializeComponent();
            Hit.Loaded += Hit_Loaded;

        }

        private void Hit_Loaded(object sender, RoutedEventArgs e)
        {
            Storyboard sb = this.FindResource("animation") as Storyboard;
            Storyboard.SetTarget(sb, this.Hit);
            sb.Begin();
        }