2010-09-20 6 views
18

Sto provando a richiamare uno storyboard dichiarato in xaml da C#.Chiama uno storyboard dichiarato in xaml dal C#

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

Non ho accesso a "PlayStoryboard" dal file codebehind. Qualche idea su cosa sto facendo male?

risposta

41

Poiché hai dichiarato lo Storyboard come risorsa, puoi accedervi utilizzando FindResource ("PlayAnimation"). Vedere esempio riportato di seguito:

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> 

Codice-behind:

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(); 
    } 
} 
Problemi correlati