我试着做一些很简单的事情。我有一个绑定到bool的ToggleButton.IsChecked属性。我希望背景切换之间的红色(假)和绿色(真)。但出于某种原因,它似乎是在红色和无背景之间切换。我使用一个转换器来检查我是否从源获得了正确的通知,所以我不确定为什么一个触发器(false/red)工作,而另一个触发器(true/green)不工作。也想听听人们是如何调试这些问题的。谢谢!
这是密码。
<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>更新:我将切换按钮更改为复选框,它可以工作。不知道为什么..。
发布于 2011-05-03 21:32:03
尝试使用WPF检查器:
https://wpfinspector.codeplex.com/
一旦您附加到正在运行的WPF应用程序,请按住ctrl +单击ctrl+单击,突出显示有关元素。然后,选择包含触发器的视觉树中的元素(可能是父元素)。单击“触发器”选项卡,您可以看到当前的评估(例如,True == True)。如果满足数据处理程序的条件,则小图标将是橙色的(发光)。
发布于 2009-01-05 14:12:09
在我看来是可以的,您能尝试更改转换器以返回“红色”或“绿色”而不是真/假(并相应地更改触发器)。在使用NULL或Booleans时,我看到了WPF触发器的一些wierd行为,因为它“取消”了与触发器值相反的属性,而不是使用另一个触发器值。
至于调试..。我想知道是否有比我通常用于XAML调试的黑客和希望方法更好的方法:D
https://stackoverflow.com/questions/413117
复制相似问题