2017-05-23 1 views
0

スタイルを使用してWPFコントロールを作成したいのですが(このケースではTelerikのサードパーティのものですが、何でも構いません)、VisibilityプロパティがHiddenに変更されています。私が使用しようとしているこのアプローチは、のコンテンツをに退色させるために、Visibility.Visibleに設定した後でうまく機能します。Visibility.HiddenのWPFコントロールをフェードアウトする

<Style x:Key="FadeoutStyle" TargetType="telerik:RadDiagramShape"> 
    <Style.Triggers>    
     <Trigger Property="Visibility" Value="Hidden"> 
      <Trigger.EnterActions> 
       <BeginStoryboard> 
        <Storyboard> 
         <DoubleAnimation Storyboard.TargetProperty="Opacity" 
           From="1.0" To="0.0" Duration="0:0:1"/> 
        </Storyboard> 
       </BeginStoryboard> 
      </Trigger.EnterActions> 
     </Trigger>    
    </Style.Triggers> 
</Style> 

私はこれが動作しない理由のかなり確信している:とすぐにコントロールが非表示に設定されているとして、WPFはそれを描く停止しますが、これは逆のように動作しません。私のアニメーションも再生されるかもしれませんが、Visibility.Hiddenがすぐに適用されたため表示されません。

質問1:私の前提は正しいですか?質問2:これを回避する良いパターンは何ですか?私は、カスタムプロパティがフェードアウトのアニメーションを開始し、実際のVisibility.Hidden設定を適用するコールバックを使用するソリューションを想像することができます。よりクリーンなソリューションはありますか?

+1

https://stackoverflow.com/a/4318320/1136211 [コントロールのWPFフェードアウト]の – Clemens

+0

可能な複製(します。https:// stackoverflowの(別のプロパティを使用して)私の作業バージョンは次のようになります.com/questions/4317875/wpf-fade-out-on-a-control) –

答えて

0

可視性を除いて、究極的に私はトリガーを誤って使用していたことが判明しました。

<Trigger Property="IsEnabled" Value="False"> 
     <Trigger.EnterActions> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:0.2"/> 
       </Storyboard> 
      </BeginStoryboard> 
     </Trigger.EnterActions> 
     <Trigger.ExitActions> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.2"/> 
       </Storyboard> 
      </BeginStoryboard> 
     </Trigger.ExitActions> 
    </Trigger> 
関連する問題