Привязать элементы управления к отдельной анимации - PullRequest
0 голосов
/ 07 августа 2009

Я новичок в wpf и пытаюсь чему-то научиться. Моя проблема: мне нужно привязать все, что я хочу, к циклической анимации ...

Пример:

<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 скрыт и действует как источник для Slider2 и ButtonWidth. Как автономный генератор. Мне нужен способ устранить slider1 и привязать его к отдельной анимации, которая зацикливается. Это возможно? Заранее спасибо:)

Ответы [ 2 ]

1 голос
/ 07 августа 2009

Почему бы вам просто не анимировать значение Slider2 так же, как вы анимировали значение Slider1? Вы также можете анимировать ширину кнопки. Я не уверен, зачем вам нужен Slider1. Следующая разметка демонстрирует удаление Slider1 и использование анимации в качестве ресурса:

<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>

Вы можете удалить TargetProperty из ValueAnimation и указать это также для каждой анимации. Это позволит вам использовать одну анимацию как для Button.Width, так и для Slider.Value.

0 голосов
/ 08 августа 2009

спасибо за ваш ответ:)

Почему бы вам просто не анимировать значение Slider2 так же, как вы анимировали значение Slider1?

потому что мне нужно централизовать значения анимации, чтобы разделить их на несколько объектов (не только на другом слайдере), и, таким образом, я могу редактировать значения только в 1 месте:)

Спасибо, ваш пример хорошо подходит:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...