Привязать анимацию Silverlight к нажатию кнопки - PullRequest
3 голосов
/ 25 октября 2010

Я пытаюсь запустить анимацию одним нажатием кнопки. Следующий код выглядит разумно, но выдает ошибку времени выполнения. В идеале я хотел бы просто указать раскадровку на команду. Возможно ли это (я гуглил и не нашел ничего, что указывало бы на это)

                <Button Width="50" Height="24" Content="X">
                    <Button.Triggers>
                        <EventTrigger RoutedEvent="Button.Click">
                            <BeginStoryboard Storyboard="{StaticResource ShowTemplateSelector}">
                            </BeginStoryboard>
                        </EventTrigger>
                    </Button.Triggers>
                </Button>

Вот раскадровка:

<UserControl.Resources>
    <Storyboard x:Name="ShowTemplateSelector">
        <DoubleAnimation Storyboard.TargetName="canvasStyleSelected" Storyboard.TargetProperty="Width" From="0" To="332" Duration="0:0:0.4" />
        <DoubleAnimation Storyboard.TargetName="canvasStyleSelected" Storyboard.TargetProperty="Height" From="0" To="100" Duration="0:0:0.4" />
    </Storyboard>

Ошибка выполнения говорит:

Ошибка выполнения Microsoft JScript: необработанная ошибка в приложении Silverlight 2531 Произошла ошибка. [Строка: 97 Позиция: 55] в System.Windows.Application.LoadComponent (компонент объекта, Uri resourceLocator) в SilverlightApplication8.MainPage.InitializeComponent () в SilverlightApplication8.MainPage..ctor () в SilverlightApplication8.App.Application_Startup (Отправитель объекта, StartupEventArgs e) в MS.Internal.CoreInvokeHandler.InvokeEventHandler (Int32 typeIndex, делегат handlerDelegate, отправитель объекта, аргументы объекта) в MS.Internal.JoltHelper.FireEvent (IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)

Строка 97 это:

<EventTrigger RoutedEvent="Button.Click">

Ответы [ 3 ]

3 голосов
/ 28 июля 2011

Вы можете получить именно то, что вы хотите с Blend SDK. Просто прикрепите поведение ControlStoryboardAction к вашей кнопке:

    <Button Width="50" Height="24" Content="X">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="Click">
                <ei:ControlStoryboardAction Storyboard="{StaticResource ShowTemplateSelector}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </Button>

, где i и ei определены следующим образом:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
2 голосов
/ 25 октября 2010

Вам нужно переместить раскадровку в триггер.Если вы попытаетесь сослаться на него как на StaticResource, он не сможет разрешить имена в области именования ResourceDictionary

<EventTrigger RoutedEvent="Button.Click">
  <BeginStoryboard>
    <BeginStoryboard.Storyboard>
      <Storyboard x:Name="ShowTemplateSelector">
        <DoubleAnimation Storyboard.TargetName="canvasStyleSelected" Storyboard.TargetProperty="Width" From="0" To="332" Duration="0:0:0.4" />
        <DoubleAnimation Storyboard.TargetName="canvasStyleSelected" Storyboard.TargetProperty="Height" From="0" To="100" Duration="0:0:0.4" />
      </Storyboard>
  </BeginStoryboard.Storyboard>
</BeginStoryboard>
0 голосов
/ 25 октября 2010

Изменить это ...

<BeginStoryboard Storyboard="{StaticResource ShowTemplateSelector}">
</BeginStoryboard>

к этому ...

<BeginStoryboard Storyboard="{DynamicResource ShowTemplateSelector}">
</BeginStoryboard>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...