2010-06-04 138 views
1

我有一個用戶控件,在資源節中,我有這樣的代碼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> 

所以這個工程,我在此控件中的視框,

但是當我做

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

的視圖框我得到的錯誤中....

有沒有辦法給當地的觸發器添加到ViewBox不使用樣式?

回答

2

MSDN

觸發器 的元件上建立的集合僅 支持EventTrigger,不屬性 觸發器(觸發器)。如果您需要 屬性觸發器,你必須把這些 一個樣式或模板內 然後通過隱式的引用,樣式或模板分配給 的元素或者直接通過 Style屬性,或間接 。

1

FrameworkElements與樣式和模板的觸發器集合接受不同類型的觸發器。對於FrameworkElement.Triggers,您只能使用EventTrigger,通常用於啓動動畫。 Style,ControlTemplate和DataTemplate觸發器集合可以使用更常見的Trigger和DataTrigger,就像您正在使用的那樣。這是一個奇怪的設置,總是有點像未完成的功能。您可以更改代碼以使用Storyboard通過EventTrigger爲DropShadowEffect上的屬性設置動畫或僅使用樣式方法。