ここにいくつかのコードがあります:
<components:AnimatedContentControl x:Name="MainContent" Content="{Binding}">
<components:AnimatedContentControl.Triggers>
<EventTrigger RoutedEvent="components:AnimatedContentControl.ContentChanged">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="MainContent"
Storyboard.TargetProperty="Height"
Duration="0:0:0.25"
From="0"
To="{Binding ElementName=MainContent, Path=ActualHeight}" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</components:AnimatedContentControl.Triggers>
</components:AnimatedContentControl>
AnimatedContentControl
は、内部にルーティング イベントがある ContentControl に基づいて作成したクラスですContentChanged
(何らかの理由で、 s には既定ContentControl
でイベントがないため)。ContentChanged
このコードの目標は、アプリケーションが指すものをすべてDataContext
this にロードしContentControl
、データ コンテキストが変更されたときに、ゼロから新しいコンテンツのサイズまでのスライドで構成される単純なアニメーションを表示することです (理想的には、古いコンテンツの高さから新しいコンテンツの高さにスライドしますが、最初のステップが最初です)。このような単純なアイデアに対して、これを開発するのは非常に困難でした。
私の問題が何であるかはすでにわかっています。このイベントが発生すると、 のContent
プロパティはAnimatedContentControl
更新されていますが、何らかの理由で の は更新されActualSize
てAnimatedContentControl
いません (実際、考えてみると、おそらくActualSize
プロパティFrom
をDoubleAnimation
-後で試します) 。
だから私の質問はこれです:のコンテンツのDoubleAnimation
実際のサイズである にバインドできるものはありますか? AnimatedContentControl
もしそうなら、それは何ですか?そうでない場合、どのような回避策がありますか?