2016-08-29 24 views
1

条件が真であれば、バインディングを使ってグリッドの背景を変更したいと思います。
私はMVVM light frameworkを使用しています。アニメーショングリッドの背景色

<Grid.Style> 
    <Style TargetType="Grid"> 
     <Style.Triggers> 
     <DataTrigger Binding="{Binding SuccessBooked, UpdateSourceTrigger=PropertyChanged}" 
        Value="True"> 
      <!--Setter Property="Background" Value="LimeGreen" />--> 
      <DataTrigger.EnterActions> 
      <BeginStoryboard> 
       <Storyboard> 
       <ColorAnimation To="LimeGreen" 
          Storyboard.TargetName="ActualWeightBg" 
          Storyboard.TargetProperty="Background" 
          FillBehavior="Stop" 
          Duration="0:0:12"/> 
       <!--<DoubleAnimation Storyboard.TargetProperty="Opacity" 
        From="0.0" To="1.0" Duration="0:0:15"/>--> 
       </Storyboard> 
      </BeginStoryboard> 
      </DataTrigger.EnterActions> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding LowerBooked, UpdateSourceTrigger=PropertyChanged}" 
        Value="True"> 
      <Setter Property="Background" Value="Red" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding HigherBooked, UpdateSourceTrigger=PropertyChanged}" 
        Value="True"> 
      <Setter Property="Background" Value="DarkOrange" /> 
     </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Grid.Style> 

コンパイラは文句:

enter image description here

私はStoryboard.TargetName="ActualWeightBg"削除する場合:

<ColorAnimation To="LimeGreen" 
    Storyboard.TargetProperty="Background" 
    FillBehavior="Stop" 
    Duration="0:0:12"/> 

を、私はこの例外を取得:

Exception thrown: 'System.InvalidOperationException' in PresentationFramework.dll

私はその背景色が5秒間変化することを望んでいます。その後、標準色に戻す必要があります。そして、あなたがここで見るとおり

Cannot resolve all property references in the property path 'Background.Color'. Verify that applicable objects support the properties.

、背景色が設定されていない enter image description here

:背景色が設定されていない時に更新

だから、それはエラーがスローされますエラーが発生します:
enter image description here

しかし、wh背景が設定されている:
enter image description here

次に、期待どおりに動作します。

背景色を設定せずにアニメーション背景色を設定する方法を教えてください。 ユーザーコントロールです。

答えて

3

まず、StyleTriggersは一般的にTargetNamesをサポートしていません。

AFAIKのみTemplateTriggersがサポートしています。

DataTriggerは次のようになります。

<DataTrigger.EnterActions> 
    <BeginStoryboard> 
     <Storyboard> 
      <ColorAnimation Storyboard.TargetProperty="Background.Color" To="LimeGreen" 
       FillBehavior="Stop" AutoReverse="True" Duration="0:0:5" />  
     </Storyboard> 
    </BeginStoryboard> 
</DataTrigger.EnterActions> 

Storyboard.TargetProperty="Background.Color"に注目してください。また、TimeSpanが高すぎました。もう一つは、AutoReverseをtrueに設定しています。仕事に、このトリガーを取得するために

EDIT

は、グリッドのスタイルに設定する最初の背景があります。

<Style TargetType="Grid"> 
     <Setter Property="Background" Value="Red"/> 
+0

ありがとうございます、それは魅力的です。 –

+0

エラーが発生しました。 'プロパティパス' Background.Color 'のすべてのプロパティ参照を解決できません。該当するオブジェクトがプロパティをサポートしていることを確認します。ときどき動作しない場合があります(エラーがスローされます)。 –

+0

私は問題がどこにあるのか知っていますが、問題の解決方法はわかりません。私は私のポストを更新します。 –