0

これは私のコードです:

  <Style  TargetType="ContentControl" x:Key="MenuItemsStyle">
                <Setter Property="Background" Value="Transparent"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                          <Border Name="mainBorder" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                                        <Border.Style>
                                            <Style TargetType="Border">
                                                <Setter Property="BorderThickness" Value="1.2"/>
                                                <Setter Property="Background" >
                                                    <Setter.Value>
                                                        <SolidColorBrush Color="Transparent"/>
                                                    </Setter.Value>
                                                </Setter>
                                                <Setter Property="BorderBrush" >
                                                    <Setter.Value>
                                                        <SolidColorBrush Color="Transparent"/>
                                                    </Setter.Value>
                                                </Setter>
                                                <Style.Triggers>
                                                    <EventTrigger RoutedEvent="Border.MouseEnter">
                                                        <BeginStoryboard Storyboard="{StaticResource BorderEnterStoryBoard}"/>
                                                    </EventTrigger>
                                                    <EventTrigger RoutedEvent="Border.MouseLeave">
                                                        <BeginStoryboard Storyboard="{StaticResource BorderLeaveStoryBoard}"/>
                                                    </EventTrigger>
                                                </Style.Triggers>
                                            </Style>
                                        </Border.Style>
                                        <ContentPresenter VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
                                                          Content="{TemplateBinding ContentControl.Content}">
                                            <ContentPresenter.Triggers>
                                                <EventTrigger RoutedEvent="ContentPresenter.MouseDown">
                                                    <BeginStoryboard Storyboard="{StaticResource ViewPort3DStoryBoard}"/>
                                                </EventTrigger>
                                            </ContentPresenter.Triggers>
                                        </ContentPresenter>
                                    </Border>
                         </ControlTemplate>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <EventTrigger RoutedEvent="ContentControl.MouseDown">
                        <BeginStoryboard Storyboard="{StaticResource ContentControlStoryBoard}"/>
                    </EventTrigger>
                </Style.Triggers>
            </Style>

ご覧のとおり、ウィンドウ リソースに 4 つのストーリーボードを作成し、それらをスタイルとテンプレートに使用します。

1.ストーリーボードを一度実行するにはどうすればよいですか? ユーザーがコンテンツ コントロールをクリックした後、コンテンツ コントロールがウィンドウ スペースを埋めるようになりました。ユーザーがコンテンツ コントロールを再度クリックしても、アニメーション (ストーリーボード) が再度実行されないようにします (ボーダー スタイル、テンプレート、コンテンツ コントロール スタイルのすべてのストーリーボードを停止したい)。 2.どうすればこれを改善できますか(つまり、1つまたは2つのストーリーボードを使用して、それらを1回呼び出します。たとえば、コンテンツのマウスダウンですべて呼び出します)

編集: ストーリーボードはこちら:

<Window.Resources>

        <Storyboard Name="ViewPort3DStoryBoard" x:Key="ViewPort3DStoryBoard">
            <DoubleAnimation Storyboard.TargetName="aar3D" Storyboard.TargetProperty="Angle" From="0" To="90" Duration="0:0:0.2"/>
            <DoubleAnimation Storyboard.TargetName="aar3D" Storyboard.TargetProperty="Angle" From="-90" To="0" Duration="0:0:0.25" BeginTime="0:0:0.2"/>
        </Storyboard >
        <Storyboard Name="ContentControlStoryBoard" x:Key="ContentControlStoryBoard">
            <DoubleAnimation Storyboard.TargetProperty="(ContentControl.Width)" To="{x:Static SystemParameters.PrimaryScreenWidth}" Duration="0:0:0.45" BeginTime="0:0:0"/>
            <DoubleAnimation Storyboard.TargetProperty="(ContentControl.Height)" To="{x:Static SystemParameters.PrimaryScreenHeight}" Duration="0:0:0.45" BeginTime="0:0:0"/>
            <ThicknessAnimation To="0" Storyboard.TargetProperty="(ContentControl.Margin)" Duration="0:0:0.25" BeginTime="0:0:0"/>
            <DoubleAnimation To="0" Storyboard.TargetProperty="(Canvas.Top)" Duration="0:0:0.25" BeginTime="0:0:0"/>
            <DoubleAnimation To="0" Storyboard.TargetProperty="(Canvas.Left)" Duration="0:0:0.25" BeginTime="0:0:0"/>
        </Storyboard>
        <Storyboard Name="BorderEnterStoryBoard" x:Key="BorderEnterStoryBoard">
            <ColorAnimation From="Transparent" To="#FF007ACC" Duration="0:0:0.1" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)"/>
            <ColorAnimation From="Transparent" To="#26FFFFFF" Duration="0:0:0.1" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"/>
        </Storyboard>
        <Storyboard Name="BorderLeaveStoryBoard" x:Key="BorderLeaveStoryBoard">
            <ColorAnimation From="#FF007ACC" To="Transparent" Duration="0:0:0.3" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)"/>
            <ColorAnimation From="#26FFFFFF" To="Transparent" Duration="0:0:0.3" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"/>
        </Storyboard>
</Window.Resources>
4

2 に答える 2

0

VB

   Dim s As New Storyboard
   s = CType(FindResource("YourStoryBoardName"), Storyboard)
   s.Begin()

C#

    Storyboard s 
    s = this.FindResource("YourStoryBoardName") as Storyboard;
    s.Begin();
于 2012-09-22T17:53:51.633 に答える
0

Fillbeavior Stop はトリックを行う必要があります

http://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline.fillbehavior.aspx

于 2012-09-23T11:35:26.630 に答える