2017-04-20 21 views
0
<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命名空間中收到此消息「The property」key「不存在。如何定位故事板中的一組控件WPF

回答

1

給按鈕a驅動其不透明度情節提要對方按鈕,

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

Alterna把所有的按鈕都放在一個StackPanel(或者網格,或者其他)中,然後爲父母的Opacity設置動畫。

+0

我不明白。我還沒有遇到元素名稱。什麼是ButtonA?它指的是什麼? – Decoder94

+1

@ Decoder94查看更新。我將'ButtonA'改爲'button2',因爲這是您在示例中實際使用的名稱。這個ElementName的東西是幹什麼的,它使用XAML元素作爲源。其效果是,只要'button2.Opacity'發生變化,'button3'的不透明度將自動更新爲具有相同的值。 –

+0

謝謝。明白! – Decoder94

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>