2012-01-16 78 views
4

我試圖淡入控制,當它變得可見。下面的編譯和運行正常,它只是不褪色的(當IsActive設置爲true控制即刻出現)調試觸發器(或爲什麼這個觸發器不工作?)

<UserControl x:Class="blah" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:util="clr-namespace:blah.Util" 
      mc:Ignorable="d" 
      d:DesignHeight="250" d:DesignWidth="400"> 
    <UserControl.Resources> 
     <util:BooleanToVisibilityConverter x:Key="BoolToVis" /> 

     <Style TargetType="UserControl"> 
      <Style.Triggers> 
       <Trigger Property="Visibility" Value="Visible"> 
        <Trigger.EnterActions> 
         <BeginStoryboard> 
          <Storyboard> 
           <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0.0" To="1.0" Duration="0:0:1.25" /> 
          </Storyboard> 
         </BeginStoryboard> 
        </Trigger.EnterActions> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </UserControl.Resources> 

    <UserControl.Visibility> 
     <Binding Path="IsActive" Converter="{StaticResource ResourceKey=BoolToVis}" ConverterParameter="False" /> 
    </UserControl.Visibility> 

    <!-- Snip rest of simple control --> 

</UserControl> 

首先,我會很感激,如果有人能告訴我這是爲什麼不工作。

其次,我想知道是否有任何方法來調試這些事情,因爲我經常發現自己試圖讓觸發器正常工作。目前我的調試包括盯着XAML嘗試查看錯誤,或隨機更改位來嘗試縮小該區域。

我真正想做的事情就是在<Trigger Property="Visibility" Value="Visible">位上放一個斷點,看看是否觸發了這一點。很明顯,我不能這樣做,但想知道是否有任何方法可以進行更多的結構化調試,而不是我目前在空白的牆上隨意撥動。 : -/

+0

通常調試觸發我會要麼改變非常明顯的特性,如'Background'或'Foreground'顏色,或者如果不工作,我會用[史努比](HTTP: //snoopwpf.codeplex.com/)來查看某些東西的當前值是在運行時還是當它改變時。 – Rachel 2012-01-16 13:53:43

回答

4

在樣式中設置UserControl.Visibility或者如果明確設置Visibility屬性,則將覆蓋Style.Trigger

<Setter Property="Visibility" Value="{Binding Path=IsActive, Converter={StaticResource ResourceKey=BoolToVis}, ConverterParameter=False}" /> 
+0

謝謝,試過了,但沒有任何區別。通過設置第一個孩子的可見性/不透明度而不是控制本身來最終實現它的工作。不知道爲什麼這有所作爲。 – GazTheDestroyer 2012-01-16 12:17:57

+2

@GazTheDestroyer:風格只適用於兒童,而不是控制本身,如果它在資源中指定... – 2012-01-16 13:44:02

+0

非常感謝H.B.如果你想添加這個作爲答案,我會標記爲正確的。 – GazTheDestroyer 2012-01-16 14:17:39