2014-11-06 2 views
1

У меня есть настраиваемый элемент управления, расширяющий кнопку переключения. Этот пользовательский элемент управления имеет три свойства зависимостей для ImageSource с, которые могут быть использованы для настройки Image S, которые представляют определенный визуальное впечатление:Как обращаться с детьми стиля ControlTemplate для анимации?

<Style TargetType="{x:Type local:SimpleFeedbackToggleButton}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type local:SimpleFeedbackToggleButton}"> 
       <Grid x:Name="BtnGrid"> 
        <Image x:Name="FeedbackImage" Source="{TemplateBinding FeedbackImageSource}" Visibility="Hidden" /> 
        <Image x:Name="NormalImage" Margin="{TemplateBinding Padding}" Source="{TemplateBinding NormalImageSource}" /> 
        <Image x:Name="DisabledImage" Source="{TemplateBinding DisabledImageSource}" Visibility="Hidden" /> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Visibility" Value="Visible" TargetName="DisabledImage"/> 
         <Setter Property="Opacity" Value="1.0" TargetName="BtnGrid"/> 
        </Trigger> 
        <Trigger Property="IsChecked" Value="true"> 
         <Setter Property="Visibility" Value="Visible" TargetName="FeedbackImage"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding FeedbackBlink, RelativeSource={RelativeSource Self}}" Value="True"> 
      <DataTrigger.EnterActions> 
       <BeginStoryboard x:Name="SB_BlinkFeedback"> 
        <Storyboard Storyboard.TargetProperty="Opacity"> 
         <DoubleAnimation From="1.0" To="0.3" Duration="0:0:1" RepeatBehavior="Forever" AutoReverse="True" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </DataTrigger.EnterActions> 
      <DataTrigger.ExitActions> 
       <StopStoryboard BeginStoryboardName="SB_BlinkFeedback" /> 
      </DataTrigger.ExitActions> 
     </DataTrigger> 
    </Style.Triggers> 
</Style>  

Другая зависимость свойство FeedbackBlink должна использоваться для запуска и остановки мигания только одно из изображений (FeedbackImage). К сожалению, я не могу узнать, как адресовать это изображение с Storyboard «SB_BlinkFeedback». Как я мог это сделать?

ответ

1

Нашли рабочее решение вскоре после размещения вопроса: мне пришлось переместить DataTrigger от <Style.Triggers> до <ControlTemplate.Triggers>. Затем объявление Storyboard может быть заполнено Storyboard.TargetName="FeedbackImage" без компиляции или ошибки времени выполнения.

Смежные вопросы