には、どうするのがベストなの開始のアニメーションが行き値が変化するかを
-
13-09-2019 - |
質問
この状況がしばしば:
は、制御されるViewModel(ッINotifyPropertyChanged).例えば:
<TextBlock Text="{Binding Path=Subtotal}"/>
場合、プロパティの変更の必要があり、ユーザーという事実にも、目を向が創作アニメーションかが利用できることを既に有線の通知を作成しないように余分なコード(または少なくとも創造していくかについて一度再利用)となります。データのトリガーの最良の選択がわからないのでどのようにして火災に任意の値の変化に対し特定の値です。
以下のオプションを思い浮かべるかもし:
- 昇には追加のイベントのViewModel日のコードです。
- をdatatrigger行きにてを変換するがtrueを返す場合、値は変化しています。
- をdatatriggerされる新しいboolean propertyのViewModel使用される"信号"に変化します。
- を挙動の制御を受け、コントロールの依存関係のプロパティ変更をアニメーション
うように/を使用しますか?かん合す。
P.S.もっとも重要なものではない)場合は液を提供する可能性の開始にアニメーションの最初に反映し、価値の変更がで終了しました。
解決
Ok、アドバイスをお聞かせた後に一実験.
を生み出してい表現をブレンド3つのトリガーとの依存関係の物件についても契約).I結合の契約を同じ値に自分のTextBlockは、このトリガーを取り付けControlStoryboardActionからの表現にブレンド3.
こちらのトリガー:
public class DataTriggerPlus : TriggerBase<DependencyObject>
{
public static readonly DependencyProperty SubscriptionProperty =
DependencyProperty.Register("Subscription",
typeof(string),
typeof(DataTriggerPlus),
new FrameworkPropertyMetadata("",
new PropertyChangedCallback(OnSubscriptionChanged)));
public string Subscription
{
get { return (string)GetValue(SubscriptionProperty); }
set { SetValue(SubscriptionProperty, value); }
}
private static void OnSubscriptionChanged(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
((DataTriggerPlus)d).InvokeActions(null);
}
}
この絵コンテ:
<TextBlock x:Name="textBlock" Text="{Binding TestProp}" Background="White">
<i:Interaction.Triggers>
<local:DataTriggerPlus Subscription="{Binding TestProp}">
<im:ControlStoryboardAction
Storyboard="{StaticResource Storyboard1}"/>
</local:DataTriggerPlus>
</i:Interaction.Triggers>
</TextBlock>
私はこのようなアプローチは、仕事をブレンド3のデザイナー!
編集:応答を描いたコメント...
そう、船舶によく混ざる。だけどMicrosoft.Expression.Interactions.dll います。Windowsの場合です。双方向性へのプロジェクトに関する
り、デフォルト値が設定さしてくれてありがとうございますか自分がその気にさえなればねを用行動経由スタイル この質問 があります。例えば、できるだけでなく、起絵コンテ、スイッチ状態はいくつかの他の動作と同じトリガが発生します。
他のヒント
あなたがアニメーションを開始しますトリガを作成することができます。
このような何かます:
<Style>
<Style.Triggers>
<Trigger
Property="ViewModelProperty"
Value="True">
<Trigger.EnterActions>
<BeginStoryboard Storyboard="YourStoryBoard" />
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
アニメーションが完了した後に値を設定する問題の問題のように、これは痛みのビットです。私の知る限り、あなたがストーリーボードに完了したイベントを使用する必要があるだろう承知しているように、これはあなたがMVVMで避けたいものである、背後にあるコードを必要とします。
私が完了したイベントにバインドするEventTriggersを使用して試してみたが、それはまた、いくつかの合併症を紹介します。 のhref="https://stackoverflow.com/questions/942276/boolean-animation-locks-property">ます。