2016-08-22 7 views
1

私は現在、リストボックスの項目の背景色は、値は背景を変更した場合、ステータスの値に基づいて設定されている要約アニメーションXAMLのListBox項目の背景色

<ListBox ItemsSource="{Binding Items}" Margin="336,60,10,63"> 
    <ListBox.Resources> 
     <Style TargetType="{x:Type ListBoxItem}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Status}" Value="1"> 
        <Setter Property="Background" Value="Blue" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Status}" Value="2"> 
        <Setter Property="Background" Value="Green" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Status}" Value="4"> 
        <Setter Property="Background" Value="Orange" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Status}" Value="8"> 
        <Setter Property="Background" Value="Red" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Status}" Value="16"> 
        <Setter Property="Background" Value="Gray" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Status}" Value="32"> 
        <Setter Property="Background" Value="DarkGray" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ListBox.Resources> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Vertical"> 
       <Label Content="{Binding DisplayName}" /> 
       <Label Margin="20,0,0,0" Content="{Binding CurrentState}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Columns="4"/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</ListBox> 

のグリッドを表示し、次のXAMLを持っています色が正しく変化します。

Stateの値が変化すると、ある色から次の色へのアニメーション/トランジションが行われます。

私はここで検索を持ってきたと私は私の<DataTrigger></DataTrigger>

問題1の内側に、おそらく

<BeginStoryboard> 
    <Storyboard> 
     <ColorAnimation Storyboard.TargetName="BackgroundGrid" From="Red" To="Blue" Duration="0:0:4" Storyboard.TargetProperty="Background" /> 
    </Storyboard> 
</BeginStoryboard> 

を使用する必要が示唆しているthis post渡って来ている:私が最初に気づい上記の例ではFromカラーが指定されていますが、アイテムがどの色から遷移しているのかわかりません

問題2:<BeginStoryBoard></BeginStoryBoard>は有効な構文ではなく、<DataTrigger></DataTrigger>

と表示されています。私はXAMLアニメーションでこれを試したことがあるので、助けていただければ幸いです。

+1

問題2を処理する方法はわかりませんが、問題1は簡単です:アニメーションの「From」部分を含めないでください。 'To'だけでうまく動作します。 – Stewbob

+0

[データ変更時にアニメーションをトリガする方法](https://msdn.microsoft.com/en-us/library/aa970679(v=v1/90).aspx)を参照してください。 – Clemens

答えて

2

@Stewbobで述べた最初の問題については、Fromの部分がアニメーションに含まれていないため、正常に動作します。あなたは、このようなあなたのDataTriggerに入力し、[終了]アクション定義することによって、あなたの第二の問題を解決することができ :ここで注意すべき

    <DataTrigger Binding="" Value="True"> 
        <DataTrigger.EnterActions> 
         <BeginStoryboard> 
          <Storyboard> 
           <ColorAnimation> //your color animation </ColorAnimation> 
          </Storyboard> 
         </BeginStoryboard> 
        </DataTrigger.EnterActions> 
        <DataTrigger.ExitActions> 
         <BeginStoryboard> 
          <Storyboard> 
          <ColorAnimation> <ColorAnimation /> 
          </Storyboard> 
         </BeginStoryboard> 
        </DataTrigger.ExitActions> 
       </DataTrigger> 

ことの一つは、単純なセッターのみとなります一時的な値を設定する一方EnterActionsとExitActionsが永久的に値を設定することですトリガでプロパティ条件が満たされている間は適用されます。

関連する問題