2009-08-07 15 views
0

Ich bin neu bei WPF und ich versuche etwas zu lernen. Mein Problem ist: Ich brauche alle zu binden, die ich auf eine Looping-Animation wollen ...Bind Controls Standalone-Animationen

Beispiel:

<Window x:Class="Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Window1" Height="300" Width="300"> 
<StackPanel> 
    <Slider Visibility="Hidden" Minimum="0" Maximum="100" Height="22" Margin="73,40,105,0" Name="Slider1" VerticalAlignment="Top" Value="0"> 
     <Slider.Triggers> 
     <EventTrigger RoutedEvent="Slider.Loaded"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation 
         Storyboard.TargetName="Slider1" 
         Storyboard.TargetProperty="Value" 
         From="0" To="100" Duration="0:0:5" 
         AutoReverse="True" RepeatBehavior="Forever" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
      </Slider.Triggers> 
    </Slider> 
    <Slider Minimum="0" Maximum="100" Height="22" Margin="72,98,106,0" Name="Slider2" VerticalAlignment="Top" Value="{Binding ElementName=Slider1, Path=Value}"/> 
    <Button Width="{Binding ElementName=Slider1, Path=Value}"></Button> 
</StackPanel> 

Slider1 versteckt und wirken als Quelle für Slider2 und Button. Wie ein eigenständiger Oszillator. Ich brauche eine Möglichkeit, Slider1 zu eliminieren und direkt an eine Standalone-Animation zu binden, die eine Schleife bildet. Es ist möglich? Vielen Dank im Voraus :)

Antwort

1

Warum animieren Sie den Slider2-Wert nicht einfach so, wie Sie Slider1 animiert haben? Sie können auch die Breite des Buttons animieren. Ich bin nicht sicher, warum Sie Slider1 überhaupt brauchen würden. Das folgende Markup zeigt Slider1 und mit Hilfe der Animation als Ressource zu entfernen:

<Window.Resources> 
    <DoubleAnimation x:Key="ValueAnimation" 
         Storyboard.TargetProperty="Value" 
         From="0" To="100" Duration="0:0:5" 
         AutoReverse="True" RepeatBehavior="Forever" /> 
</Window.Resources> 
<StackPanel> 
    <Slider Minimum="0" Maximum="100" Height="22" Margin="72,98,106,0" 
      Name="Slider2" VerticalAlignment="Top"> 
     <Slider.Triggers> 
      <EventTrigger RoutedEvent="Slider.Loaded"> 
       <BeginStoryboard> 
        <Storyboard Storyboard.TargetName="Slider2"> 
         <StaticResource ResourceKey="ValueAnimation"/> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </Slider.Triggers> 
    </Slider> 
    <Button Width="{Binding ElementName=Slider2, Path=Value}"/> 
</StackPanel> 

Sie konnten den Target von ValueAnimation entfernen und angeben, dass pro Animation, wie gut. Auf diese Weise können Sie sowohl für Button.Width als auch für Slider.Value eine einzige Animation verwenden.

0

Dank für Ihre Antwort :)

Warum animieren Sie nicht einfach die Slider2 Wert auf die gleiche Weise Slider1 Wert animiert haben?

, weil ich die Animation Werte zentralisieren müssen es auf mehrere Objekte zu teilen (nicht nur einen anderen Schieber) und auf diese Weise kann ich Werte in 1 Ort bearbeiten nur :)

Danke Ihr Beispiel passt gut :)