2012-01-16 90 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