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更改为一个复选框,它可以工作.不明白为什么......
尝试使用WPF Inspector:
https://wpfinspector.codeplex.com/
连接到正在运行的WPF应用程序后,按住ctrl +单击它突出显示有问题的元素.然后,选择包含触发器的可视树中的元素(可能是父元素).单击触发器选项卡,您可以看到当前评估(例如True == True).如果满足datatrigger条件,则小图标将为橙色(亮起).
在我看来没问题,你可以尝试更改转换器以返回“红色”或“绿色”而不是 True/False (并相应地更改触发器)。当使用 NULL 或布尔值时,我发现 WPF 触发器有一些奇怪的行为,因为如果它与触发器值相反,它会“取消设置”该属性,而不是使用另一个触发器值。
至于调试它们..我很想知道是否有比我通常用于 XAML 调试的 hack 和 Hope 方法更好的方法:D
| 归档时间: |
|
| 查看次数: |
11491 次 |
| 最近记录: |