xamlのどこかで(例えば、リソースとして)アニメーションを定義して、それを複数回再利用する方法はありますか?私は、データトリガーに基づいて同じ種類のアニメーションを独立して開始する必要がある、異なるデータ型の間に独立したブラシをたくさん持っています。アニメーションがStoryboard.TargetNameとStoryboard.TargetPropertyを定義しなければならないようだからです。これは、再利用性の目的をはるかに凌駕します。私はどういうわけか「このアニメーションをリソースとして使うが、今回は別の要素に適用する」と宣言したいと思うだろう。再利用可能なリソースとしてアニメーションとトリガを定義しますか?
私にとってこれは基本的で重要で不可欠な要求であると思われます。私はそれがまっすぐ進むことで功を奏してくれることを驚かせています。私はここに何かを逃していますか
トリガーにも同じことが適用されます。色アニメーションを使用して、すべて同じタイプの状態を表す多くの異なるビジュアル要素があるとします。例えば。ビジュアルツリーの唯一の違いは、目的のアニメーションの動作が同じであることです。ビジュアルツリーのどこかに要素があります。タイプcolorのプロパティ同じアニメーションやデータトリガーセットを何度も何度も再定義するのがいかに面倒なのか想像するのは難しくありません。すべての開発者はこれを嫌う。私は必死に、後ろにC#コードを必要としない簡単な解決策を模索しています。これは(活性化、アクティブ、非アクティブ、エラーのように、あることをすべての基本的な状態のためにこれを繰り返す)リク
がリソースにアニメーションを定義します:私は今のところ出ている何
はこれです
<ColorAnimationUsingKeyFrames x:Key="deactivatingColorAnimation"
Storyboard.TargetProperty="Material.(MaterialGroup.Children)[0].Brush.(SolidColorBrush.Color)"
FillBehavior="HoldEnd" RepeatBehavior="Forever" AutoReverse="True">
<ColorAnimationUsingKeyFrames.KeyFrames>
<LinearColorKeyFrame KeyTime="00:00:00" Value="Gray"/>
<LinearColorKeyFrame KeyTime="00:00:0.25" Value="Gray"/>
<LinearColorKeyFrame KeyTime="00:00:0.5" Value="Gray" />
<LinearColorKeyFrame KeyTime="00:00:0.75" Value="Gray" />
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
トリガでストーリーボードで使用すること(必ず、各状態Xの各differnt stateviusalのための時間のこの無数を繰り返してストーリーボードの新しい名前を思い付く):
<DataTrigger Binding="{Binding SubstrateHolder.State}" Value="Deactivating">
<DataTrigger.EnterActions>
<BeginStoryboard x:Name="someStateVisualDeactivatingStoryboard">
<Storyboard Storyboard.TargetName="someStateVisual">
<StaticResource ResourceKey="deactivatingColorAnimation" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<RemoveStoryboard BeginStoryboardName="someStateVisualDeactivatingStoryboard" />
</DataTrigger.ExitActions>
</DataTrigger>
膨大な量の膨大なXAMLを、膨大な数のDataTriggerすべてに対して繰り返しコピーして貼り付けなければならないことを簡単に想像することができます。
このトリガをすべて一度定義し、それをさまざまな状態のビジュアルに適用することはクールです。これはWPFでどのように解決されますか?すべてのヒント?
私は、これについての提案を思いつくためにさまざまなことを試したことを知っています。コードで何かをしなければ、それはできませんでした。これは私があなたが得ると思うほど良い解決策です。 WPF拡張性のためのHurray、右? :) –
これにはSilverlightの動作APIを使用することをお勧めします。同意しますか?それは標準の.net 3.5フレームワークと互換性がありますか? – bitbonk
いいえ、互換性がありません。正直なところ、WPFアーキテクチャを非常に「自然な」方法で活用する優れたソリューションが見つかったと思います。 –