0

「トースター」ポップアップ用に次のXAMLがあります。

<Popup x:Name="popupMessage"
           Width="500"
           Height="100"
           IsOpen="False"
           Placement="Top"
           PlacementTarget="{Binding ElementName=statusBarMain}"
           StaysOpen="True">

        <Popup.Style>
            <Style>
                <Style.Triggers>
                    <Trigger Property="Popup.IsOpen" Value="True">
                        <Trigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
                                        <SplineDoubleKeyFrame KeyTime="0:0:0" Value="0" />
                                        <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1" />
                                    </DoubleAnimationUsingKeyFrames>
                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)">
                                        <SplineDoubleKeyFrame KeyTime="0:0:0" Value="0" />
                                        <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1" />
                                        <SplineDoubleKeyFrame KeyTime="0:0:2" Value="1" />
                                        <SplineDoubleKeyFrame KeyTime="0:0:4" Value="0" />
                                    </DoubleAnimationUsingKeyFrames>
                                    <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen">
                                        <DiscreteBooleanKeyFrame KeyTime="0:0:0" Value="True" />
                                        <DiscreteBooleanKeyFrame KeyTime="0:0:4" Value="False" />
                                    </BooleanAnimationUsingKeyFrames>
                                </Storyboard>
                            </BeginStoryboard>
                        </Trigger.EnterActions>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Popup.Style>
        <Popup.RenderTransform>
            <ScaleTransform ScaleY="1" />
        </Popup.RenderTransform>

        <Border Width="504"
                Height="104"
                BorderBrush="#FF0F3D5C"
                BorderThickness="2">
            <Border Width="500"
                    Height="100"
                    BorderBrush="White"
                    BorderThickness="2">
                <Border.Background>
                    <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                        <GradientStop Offset="0" Color="#FFD3CCF5" />
                        <GradientStop Offset="1" Color="#FF0F3D5C" />
                    </LinearGradientBrush>
                </Border.Background>

                <TextBlock x:Name="textBlockMessage"
                           HorizontalAlignment="Center"
                           VerticalAlignment="Center"
                           FontSize="18"
                           Foreground="White"
                           Text="{Binding NotificationMessage}" />

            </Border>
        </Border>
    </Popup>

このポップアップの問題は、一度しか機能しないように見えることです。設定popupMessage.IsOpen = trueすると、ポップアップが1回表示されます。以降のすべての呼び出しでは、ポップアップは表示されません。チェックしたIsOpenところ、アニメーションの最後でプロパティが実際にfalseに設定されています。

明らかに私はここで何かが欠けていますが、何ですか?

4

1 に答える 1

0

Trigger の ExitActions でストーリーボードを停止する必要があります。

これを試して:

<Trigger Property="Popup.IsOpen" Value="True">
   <Trigger.EnterActions>
      <BeginStoryboard Name="OpenStoryboard">
          <Storyboard>
              <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
                  <SplineDoubleKeyFrame KeyTime="0:0:0" Value="0" />
                  <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1" />
              </DoubleAnimationUsingKeyFrames>
              <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)">
                  <SplineDoubleKeyFrame KeyTime="0:0:0" Value="0" />
                  <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1" />
                  <SplineDoubleKeyFrame KeyTime="0:0:2" Value="1" />
                  <SplineDoubleKeyFrame KeyTime="0:0:4" Value="0" />
              </DoubleAnimationUsingKeyFrames>
              <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen">
                  <DiscreteBooleanKeyFrame KeyTime="0:0:0" Value="True" />
                  <DiscreteBooleanKeyFrame KeyTime="0:0:4" Value="False" />
              </BooleanAnimationUsingKeyFrames>
          </Storyboard>
      </BeginStoryboard>
   </Trigger.EnterActions>
   <Trigger.ExitActions>
      <StopStoryboard BeginStoryboardName="OpenStoryboard"/>
   </Trigger.ExitActions>
</Trigger>

アニメーションを使用してコントロールの背景色を変更するときに同様の問題があり、それも一度しか機能しませんでした。

于 2013-10-04T08:06:16.623 に答える