2011-12-14 4 views
3

プロパティ(サイド)にバインドされた2つのDataTriggersがありますが、最後のDataTriggersの1つのストーリーボードしか開始できませんでした。複数のDataTriggers - ストーリーボードオーバーライド

なぜですか?

<Border x:Name="layout" Background="Transparent" BorderBrush="#BAC8CE" BorderThickness="1" CornerRadius="5"> 
    <Border.Style> 
     <Style TargetType="{x:Type Border}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Side}" Value="Up"> 
        <DataTrigger.EnterActions> 
         <StopStoryboard BeginStoryboardName="BeginStoryboardTwo" /> 
         <BeginStoryboard x:Name="BeginStoryboardOne"> 
          <Storyboard> 
           <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
               Duration="00:00:01" 
               From="Transparent" 
               To="Green"/> 
           <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
               Duration="00:00:00.5" 
               From="Green" 
               To="Transparent"/> 
          </Storyboard> 
         </BeginStoryboard> 
        </DataTrigger.EnterActions> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Side}" Value="Down"> 
        <DataTrigger.EnterActions> 
         <StopStoryboard BeginStoryboardName="BeginStoryboardOne" /> 
         <BeginStoryboard x:Name="BeginStoryboardTwo" > 
          <Storyboard> 
           <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
               Duration="00:00:01" 
               From="Transparent" 
               To="Red"/> 
           <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
               Duration="00:00:00.5" 
               From="Red" 
               To="Transparent"/> 
          </Storyboard> 
         </BeginStoryboard> 
        </DataTrigger.EnterActions> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Border.Style> 
    <TextBlock Text="Hello World!" /> 
</Border> 

答えて

5

を上書き最初のデータトリガーの終了アクションで

<Border x:Name="layout" 
     Grid.Row="1" 
     Background="Transparent" 
     BorderBrush="#BAC8CE" 
     BorderThickness="1" 
     CornerRadius="5"> 
    <Border.Style> 
    <Style TargetType="{x:Type Border}"> 
     <Style.Triggers> 
     <DataTrigger Binding="{Binding Side, ElementName=uc, Mode=OneWay}" 
         Value="Up"> 
      <DataTrigger.EnterActions> 
      <BeginStoryboard> 
       <Storyboard> 
       <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
           Duration="00:00:05" 
           From="Transparent" 
           To="Green" /> 
       <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
           Duration="00:00:00.5" 
           From="Green" 
           To="Transparent" /> 
       </Storyboard> 
      </BeginStoryboard> 
      </DataTrigger.EnterActions> 
      <DataTrigger.ExitActions> 
      <BeginStoryboard> 
       <Storyboard> 
       <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
           Duration="00:00:05" 
           From="Transparent" 
           To="Red" /> 
       <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
           Duration="00:00:00.5" 
           From="Red" 
           To="Transparent" /> 
       </Storyboard> 
      </BeginStoryboard> 
      </DataTrigger.ExitActions> 
     </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    </Border.Style> 
</Border> 

これが役に立ちます

+0

あなたは正しいです。私のストーリーボードは決して止まらなかった。したがって、他のストーリーボードには視覚効果はありませんでした。ありがとう –

+0

@StevenMuhr、FRuffell:この答えは正しいが、私のあまりにも;-) – punker76

1

ソリューションを以下試してください、あなたの第二datatriggerがアクションを入力してください置く:

私は最後のストーリーボードのように感じるが、私はもう一つの実行前に、あなたのストーリーボードを停止することを示唆している最初の1

<Border x:Name="layout" Background="Transparent" BorderBrush="#BAC8CE" BorderThickness="1" CornerRadius="5"> 
    <Border.Style> 
    <Style TargetType="{x:Type Border}"> 
     <Style.Triggers> 
     <DataTrigger Binding="{Binding Side}" Value="Up"> 
      <DataTrigger.EnterActions> 
      <BeginStoryboard> 
       <Storyboard> 
       <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
           Duration="00:00:01" 
           From="Transparent" 
           To="Green"/> 
       <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
           Duration="00:00:00.5" 
           From="Green" 
           To="Transparent"/> 
       </Storyboard> 
      </BeginStoryboard> 
      </DataTrigger.EnterActions> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Side}" Value="Down"> 
      <DataTrigger.EnterActions> 
      <BeginStoryboard> 
       <Storyboard> 
       <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
           Duration="00:00:01" 
           From="Transparent" 
           To="Red"/> 
       <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
           Duration="00:00:00.5" 
           From="Red" 
           To="Transparent"/> 
       </Storyboard> 
      </BeginStoryboard> 
      </DataTrigger.EnterActions> 
     </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    </Border.Style> 
</Border> 
関連する問題