如何在故事板WPF中定位一组控件

时间:2017-04-20 15:47:10

标签: wpf storyboard

<Storyboard x:Key="OnClick1">
        <DoubleAnimation Storyboard.TargetName="{StaticResource test}"
                 Storyboard.TargetProperty="Opacity"
                 From="1"
                 To="0"
                 RepeatBehavior="2000"
                 AutoReverse="True"
                 Duration="0:0:0.7"/>
</Storyboard>

<Window.Triggers>
    <EventTrigger RoutedEvent="ButtonBase.Loaded" SourceName="button">
        <BeginStoryboard Storyboard="{StaticResource OnClick1}"/>
    </EventTrigger>
</Window.Triggers>

<Button x:Name="button2" x:key="test"  Content="Button" Margin="234,140,164,0" Height="37" VerticalAlignment="Top"/>
<Button x:Name="button3" x:key="test"  Content="Button" Margin="234,140,164,0" Height="37" VerticalAlignment="Top"/>

我正在尝试将此双动画添加到多个按钮而不复制双动画。最初,我将TargetName设置为第一个按钮的名称并且它可以工作但是如果添加了按钮的键我得到此消息“属性”键“在WinFX名称空间中不存在。”

2 个答案:

答案 0 :(得分:1)

您发布的示例标记并未提供可重现的问题示例,但您可以为要设置动画的每个Button添加触发器:

<Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <Storyboard x:Key="OnClick1">
            <DoubleAnimation
                 Storyboard.TargetProperty="Opacity"
                 From="1"
                 To="0"
                 RepeatBehavior="2000"
                 AutoReverse="True"
                 Duration="0:0:0.7"/>
        </Storyboard>
    </Window.Resources>
    <StackPanel>
        <Button x:Name="button2" Content="Button" Height="37" VerticalAlignment="Top">
            <Button.Triggers>
                <EventTrigger RoutedEvent="Loaded">
                    <BeginStoryboard Storyboard="{StaticResource OnClick1}"/>
                </EventTrigger>
            </Button.Triggers>
        </Button>
        <Button x:Name="button3" Content="Button" Height="37" VerticalAlignment="Top">
            <Button.Triggers>
                <EventTrigger RoutedEvent="Loaded">
                    <BeginStoryboard Storyboard="{StaticResource OnClick1}"/>
                </EventTrigger>
            </Button.Triggers>
        </Button>
    </StackPanel>
</Window>

答案 1 :(得分:1)

为ButtonA提供驱动其不透明度的故事板。对于其他按钮,

<Button
    x:Name="button3"
    Opacity="{Binding Opacity, ElementName=button2}"
    ...
    />

或者,将所有按钮放在StackPanel(或Grid,或其他)中,并为父Opacity设置动画。

相关问题