2014-01-23 87 views
0

我有這個觸發設置在LoadingAnimation.xaml動畫:WPF故事板觸發在C#

<UserControl.Triggers> 
     <EventTrigger RoutedEvent="FrameworkElement.Loaded"> 
      <BeginStoryboard x:Name="ProgressAnimation_BeginStoryboard" Storyboard="{StaticResource ProgressAnimation}"/> 
     </EventTrigger> 
</UserControl.Triggers> 

在我MainWindow.xaml,我有這樣的一個網格內:

<control:LoadingAnimation x:Name="loadingAnimation" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="2" /> 

我明白那我就可以開始用下面的代碼的故事板:

Storyboard storyboard = Application.Current.MainWindow.FindResource("ProgressAnimation") as Storyboard; 
storyboard.Begin(); 

但我怎麼可以用「FindResource()時,我的故事板是在DIF不同階級?

+1

相關帖子:http://stackoverflow.com/questions/3755651/call-a-storyboard-declared-in-xaml-from-c-sharp – har07

+0

你的'Storyboard'聲明在哪裏? –

+0

它在加載動畫中:

回答

0

解決了它。 首先,我需要將loadAnimation用戶控件定義爲可以使用方法FindResource()的資源。 然後在找到資源後,我需要再次調用FindResource()來獲取故事板,因爲它被定義爲loadAnimation中的資源。

這是我的標籤:

<Window.Resources> 
     <control:LoadingAnimation x:Key="loadingAnimation" /> 
</Window.Resources> 

,然後在網格中使用它,我就把這行代碼在標籤:

<UserControl Content="{StaticResource loadingAnimation}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="0" Grid.Row="7" Grid.ColumnSpan="2" /> 

然後在C#中我用這個方法以訪問故事板:

private void beginStoryBoard() 
     { 
      UserControl loadingAnimation = Application.Current.MainWindow.FindResource("loadingAnimation") as UserControl; 
      Storyboard storyboard = loadingAnimation.FindResource("ProgressAnimation") as Storyboard; 
      storyboard.Begin(); 
     } 
0

地塊的許多問題詢問此,

<Window.Resources> 
    <ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="/AssembelyName;component/LoadingAnimation.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Window.Resources> 

Storyboard storyboard = this.FindResource("ProgressAnimation") as Storyboard;// this - is the current window's instance 
storyboard.Begin(); 

讓你的故事板,並調用begin方法。

+0

故事板的xaml代碼與MainWindow.xaml/cs類不在同一個類中。我怎樣才能找到不同類別的資源? –

+0

檢查更新的答案.. – Sankarann

+0

MainWindow.cs/xaml位於根名稱空間中,然後在子名稱空間中,我有故事板。我怎樣才能訪問它? 您提供的代碼不起作用。它說它找不到。 –