2010-06-04 3 views
1

У меня есть UserControl, в разделе Ресурсы У меня есть код какWPF Триггеры и стили

<Style TargetType="{x:Type Viewbox}"> 

     <Style.Triggers> 
      <Trigger Property="Viewbox.IsMouseOver" Value="True"> 
       <Setter Property="Viewbox.Effect" > 
        <Setter.Value> 
         <DropShadowEffect Color="DarkGray" Direction="45" BlurRadius="30"></DropShadowEffect> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

SO это работает для ViewBox, что у меня есть в этом контроле,

, но когда я делаю

<Viewbox.Triggers> 
     <Trigger Property="Viewbox.IsMouseOver" Value="True"> 
      <Setter Property="Viewbox.Effect" > 
       <Setter.Value> 
        <DropShadowEffect></DropShadowEffect> 
       </Setter.Value> 
      </Setter> 
     </Trigger> 
    </Viewbox.Triggers> 

в View Box я получаю ошибки ....

есть ли способ, чтобы добавить местные триггеры ViewBox без использования стиля?

ответ

2

От MSDN

Коллекция триггеров , установленных на элементе только поддерживает EventTrigger, а не свойство триггеры (Trigger). Если вам требуется спусковых собственности, вы должны поместить эти в стиле или шаблон и затем присвоить этот стиль или шаблон элемента либо непосредственно через свойство Style, или косвенно через неявную ссылку стиля.

1

Коллекция триггеров FrameworkElements vs Styles and Templates принимает различные типы триггеров. Для FrameworkElement.Triggers вы можете использовать EventTrigger, обычно используемый для запуска анимации. Коллекции Style, ControlTemplate и DataTemplate Triggers могут использовать более распространенные триггер и DataTrigger, как вы используете. Это странная настройка, которая всегда выглядит как незавершенная функция. Вы можете изменить свой код, чтобы использовать Storyboard для анимации свойств DropShadowEffect с EventTrigger или просто использовать подход Style.

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