2

アイテムを持っていStatusBar TextBlockます。これは、実行中のプロセスとステータス/情報メッセージを示します。メッセージが「準備完了」でない場合、時間の経過とともにテキストが消え、「準備完了」のままになるようにしたいと考えています。

私は現在これをテストしており、TextBlock.

<StatusBarItem DockPanel.Dock="Left" Margin="0,2,0,0">
    <TextBlock Text="{Binding StatusMessage}" 
               Margin="5,0,0,0" 
               Foreground="White">
        <TextBlock.Style>
            <Style TargetType="TextBlock">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding SystemIsReady, 
                                           NotifyOnSourceUpdated=True, 
                                           Mode=TwoWay}" 
                                 Value="False">
                        <DataTrigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                                          From="1.0" 
                                                          To="0.5" 
                                                          Duration="0:0:1.5"/>
                                </Storyboard>
                            </BeginStoryboard>
                        </DataTrigger.EnterActions>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding SystemIsReady, 
                                           NotifyOnSourceUpdated=True, 
                                           Mode=TwoWay}" 
                                 Value="True">
                        <Setter Property="Opacity" Value="1.0"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
</StatusBarItem>

IsSytemReadyステータスが「準備完了」の場合、テスト メソッドはテキストを変更し、 を更新します。バインディングは機能していますが、アプリケーションが表示される前に 0.5 の不透明度にフェードするアニメーションが発生したようで、この不透明度を 1 に戻すトリガーも機能していません。

アニメーション/トリガーが再起動しないのはなぜですか?

御時間ありがとうございます。

4

1 に答える 1

2

Timelineはまだ実行されているため、アニメーションは再起動しませんStoryboard。値をリセットできるようにするには、 を停止する必要があります。

これには、trueのthen 呼び出しにStopStoryboard名前を付けるだけで使用できます。StoryboardStopStoryboardEnterActionsDataTrigger

例:

<TextBlock.Style>
    <Style TargetType="{x:Type TextBlock}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding SystemIsReady, Mode=TwoWay, NotifyOnSourceUpdated=True}"  Value="False">
                <DataTrigger.EnterActions>
                    <BeginStoryboard Name="FadeOut">
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0"  To="0.5"  Duration="0:0:1.5"/>
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>
            </DataTrigger>
            <DataTrigger Binding="{Binding SystemIsReady, Mode=TwoWay, NotifyOnSourceUpdated=True}" Value="True">
                <Setter Property="Opacity" Value="1.0"/>
                <DataTrigger.EnterActions>
                    <StopStoryboard BeginStoryboardName="FadeOut" />
                </DataTrigger.EnterActions>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</TextBlock.Style>
于 2013-08-18T21:23:54.277 に答える