У меня есть UserControl с платой истории, и я хочу остановить анимацию, когда Видимость управления изменяется.
Я создал Триггер, чтобы приостановить анимацию и запустить ее в зависимости от состояния, но я продолжаю получать ArgumentException.
Вот XAML:
<UserControl.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard x:Name="ProgressAnimation_BeginStoryboard" Storyboard="{StaticResource ProgressAnimation}"/>
</EventTrigger>
<Trigger Property="Control.Visibility" Value="Collapsed">
<PauseStoryboard BeginStoryboardName="ProgressAnimation_BeginStoryboard" />
</Trigger>
<Trigger Property="Control.Visibility" Value="Visible">
<ResumeStoryboard BeginStoryboardName="ProgressAnimation_BeginStoryboard" />
</Trigger>
</UserControl.Triggers>
и вот Исключение:
Значение "Система. Windows. Медиа. Анимация. PauseStoryboard" не имеет типа "Система. Windows. SetterBase" и не может использоваться в этом универсальном наборе. Название параметра: значение
Как я сделал бы это в XAML?
Спасибо, Raul
Взгляните на этот образец из MSDN:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<Rectangle Name="TargetRect" Width="200" Height="200" Fill="Blue"/>
<Button Name="Begin">BeginStoryboard</Button>
<Button Name="Pause">PauseStoryboard</Button>
<Button Name="Resume">ResumeStoryboard</Button>
<StackPanel.Triggers>
<EventTrigger SourceName="Begin" RoutedEvent="Button.Click">
<BeginStoryboard Name="ColorStoryboard">
<Storyboard TargetName="TargetRect">
<ColorAnimation Storyboard.TargetProperty="Fill.Color" To="Red" Duration="0:0:3" RepeatBehavior="Forever" AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger SourceName="Pause" RoutedEvent="Button.Click">
<PauseStoryboard BeginStoryboardName="ColorStoryboard"/>
</EventTrigger>
<EventTrigger SourceName="Resume" RoutedEvent="Button.Click">
<ResumeStoryboard BeginStoryboardName="ColorStoryboard"/>
</EventTrigger>
</StackPanel.Triggers>
</StackPanel>
</Page>
Единственное различие, которое я вижу, заключается в том, что здесь используется EventTrigger
, но он должен вести себя так же, по крайней мере, по моему опыту.