WPF调试数据触发器?

时间:2009-01-05 13:40:01

标签: wpf triggers datatemplate

我正在尝试做一些非常简单的事情。我有一个绑定到bool的ToggleButton.IsChecked属性。我希望背景在红色(假)和绿色(真)之间切换。但由于某种原因,它似乎是在红色和无背景之间切换。我使用转换器来检查我是否从源获得正确的通知我是,所以不确定为什么一个触发器(假/红色)工作而另一个(真/绿色)不起作用。还想听听人们如何调试这类问题。谢谢!

这是代码。

<DataTemplate x:Name"Flipper">
    <StackPanel>
    ...
    <ToggleButton IsChecked="{Binding Path=BoolValue,
                                      Converter={StaticResource converter}}" 
                  Name="onoff" >
    </ToggleButton>
    ...
    <StackPanel>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding ElementName=onoff,Path=IsChecked}"
                     Value="True">
            <Setter TargetName="onoff" Property="Background" Value="Green"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding ElementName=onoff,Path=IsChecked}" 
                     Value="False">
            <Setter TargetName="onoff" Property="Background" Value="Red"/>
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

更新:我将togglebutton更改为复选框,它可以正常工作。不知道为什么......

2 个答案:

答案 0 :(得分:7)

尝试使用WPF Inspector:

https://wpfinspector.codeplex.com/

连接到正在运行的WPF应用程序后,按住ctrl +单击它突出显示有问题的元素。然后,选择包含触发器的可视树中的元素(可能是父元素)。单击触发器选项卡,您可以看到当前评估(例如,True == True)。如果满足datatrigger条件,则小图标将为橙色(亮起)。

答案 1 :(得分:1)

对我来说没问题,你能不能尝试改变转换器以返回“红色”或“绿色”而不是True / False(并相应地改变触发器)。我在使用NULL或布尔值时看到了WPF触发器的一些奇怪的行为,如果它与你的触发值相反,它“取消”属性,而不是使用另一个触发值。

至于调试它们..我很想知道是否有一种比我通常用于XAML调试的黑客和希望方法更好的方法:D