WPF从另一个Style访问StoryBoard

时间:2018-01-23 13:04:44

标签: wpf storyboard styles

{{1}}

如何从另一种风格访问故事板?接收"找不到名为' GridStoryBoard'的资源。资源名称区分大小写。"

1 个答案:

答案 0 :(得分:0)

你做不到。您需要将Storyboard定义为单独的资源:

<Window.Resources>

    <Storyboard x:Key="GridStoryBoard" >
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
            <EasingDoubleKeyFrame KeyTime="0:0:0.25" Value="-358" />
            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="2" />
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>

    <Style x:Key="GridStyle" TargetType="{x:Type Grid}">
    </Style>

    <Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
        <Style.Triggers>
            <EventTrigger RoutedEvent="ButtonBase.Click">
                <BeginStoryboard Storyboard="{StaticResource GridStoryBoard}" />
            </EventTrigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

然后任何Style都可以访问它。如果您将其定义为特定Style的资源,则只能由该特定Style使用。这就是为什么你首先要在那里定义它。因此,如果您希望能够在多个样式中使用它,那么在<Style.Resources>中定义它是没有意义的。