2010-09-20 12 views
18

Estoy intentando llamar a un guión gráfico declarado en xaml desde C#.Llamar a un guión gráfico declarado en xaml desde C#

<UserControl.Resources> 
    <Storyboard x:Name="PlayStoryboard" x:Key="PlayAnimation"> 
     ... 

No tengo acceso a "PlayStoryboard" desde el archivo codebehind. ¿Alguna idea de lo que estoy haciendo mal?

Respuesta

41

Desde que declaró su Guión gráfico como un recurso, puede acceder a él utilizando FindResource ("PlayAnimation"). Vea el ejemplo a continuación:

XAML:

<Window x:Class="StackOverflow.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:StackOverflow" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <Storyboard x:Key="PlayAnimation" Storyboard.TargetProperty="(Canvas.Left)"> 
      <DoubleAnimation From="0" To="100" Duration="0:0:1"/> 
     </Storyboard> 
    </Window.Resources> 

    <Canvas> 
     <Button x:Name="btn">Test</Button> 
    </Canvas> 
</Window> 

de código subyacente:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     this.Loaded += new RoutedEventHandler(MainWindow_Loaded); 
    } 

    void MainWindow_Loaded(object sender, RoutedEventArgs e) 
    { 
     Storyboard sb = this.FindResource("PlayAnimation") as Storyboard; 
     Storyboard.SetTarget(sb, this.btn); 
     sb.Begin(); 
    } 
} 
Cuestiones relacionadas