2009-07-24 9 views
0

私はXAMLで定義されているいくつかのストーリーボードを停止するEventTriggerを持っていますが、今はプログラムで開始しているストーリーボードを停止する必要があります。私は< StopStoryboard BeginStoryboardName = "FadeOutStoryboardが" />それはFadeOutStoryboardを見つけることができない私に語っ入れプログラムでインスタンス化されたストーリーボードを停止する

<UserControl.Resources> 
    <Storyboard x:Key="FadeIn"> ... Fade In Definition </StoryBoard> 
    <Storyboard x:Key="FadeOut"> ... Fade In Definition </StoryBoard> 
</UserControl> 
<UserControl.Triggers> 
    <EventTrigger RoutedEvent="Mouse.MouseLeave"> 
    <BeginStoryboard="{StaticResource FadeIn}" x:Name="FadeIn_BeginStoryboard" /> 
    </EventTrigger> 
    <EventTrigger RoutedEvent="Mouse.MouseEnter"> 
    <StopStoryboard BeginStoryboardName="FadeIn_BeginStoryboard"/> 
    <StopStoryboard BeginStoryboardName="FadeOut_BeginStoryboard"/> 
    </EventTrigger> 
</UserControl.Triggers> 


Storyboard FadeOutStoryboard; 
public void StopFadeOut() { 
    FadeIn_BeginStoryboard.Storyboard.Stop(); 
    FadeOut_BeginStoryboard.Storyboard.Stop(); 
    FadeOutStoryboard = (Storyboard) FindResource("FadeOut"); 
    FadeOutStoryboard.Name="FadeOutStoryboard"; 
    FadeOutStoryboard.Begin(); 
} 

。私はWPFプログラミングにはかなり新しいので、これを行うためのより良い方法があるかもしれません。私はそれを公開しています。 StopFadeOut()メソッドは、私のusercontrolのインスタンスを作成する親によって呼び出されています。

答えて

1

これらの行をコンストラクタに移動します。あなたは一度だけ実行する必要があります。

FadeOutStoryboard = (Storyboard)FindResource("FadeOut"); 
FadeOutStoryboard.Name = "FadeOutStoryboard"; 

次に、この行を直後に追加します。

RegisterName("FadeOutStoryboard", FadeOutStoryboard); 
関連する問題