WPF调试数据触发器?

Sha*_*run 14 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>
Run Code Online (Sandbox Code Playgroud)

更新:我将togglebutton更改为一个复选框,它可以工作.不明白为什么......

Pak*_*man 7

尝试使用WPF Inspector:

https://wpfinspector.codeplex.com/

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


Ste*_*ins 1

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

至于调试它们..我很想知道是否有比我通常用于 XAML 调试的 hack 和 Hope 方法更好的方法:D