【发布时间】:2012-01-16 19:58:56
【问题描述】:
我试图在控件变得可见时淡入它。以下编译并运行良好,只是没有淡入(当 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"> 位上设置一个断点,以查看是否将其作为起点触发。显然我不能这样做,但想知道是否有任何方法可以进行更有条理的调试,而不是我当前的随机戳一堵空白墙。 :-/
【问题讨论】:
-
通常要调试触发器,我要么更改一个非常明显的属性,例如
Background或Foreground颜色,或者如果这不起作用,我将使用Snoop 来查看某事物在运行时的当前值是多少以及何时发生变化。