WPF Отладка datatriggers?
Я пытаюсь сделать что-то очень простое. У меня есть свойство ToggleButton.IsChecked, связанное с bool. Я хочу, чтобы фон переключался между красным (false) и зеленым (true). Но по какой-то причине он, кажется, переключается между красным и без фона. Я использовал конвертер, чтобы проверить, получаю ли я правильные уведомления от источника, и я не знаю, почему один триггер (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>
Обновление: я изменил переключатель на флажок, и он работает. Не знаю, почему...
Ответы
Ответ 1
Попробуйте использовать WPF Inspector:
https://wpfinspector.codeplex.com/
После того, как вы присоединитесь к запущенному WPF-приложению, выделите этот элемент, удерживая нажатой кнопку ctrl+. Затем выберите элемент в визуальном дереве (может быть родителем), который содержит триггер. Перейдите на вкладку триггеров, и вы увидите текущую оценку (например, True == True). Если условие datatrigger выполнено, маленький значок будет оранжевым (горит).
Ответ 2
Мне все хорошо, можете ли вы попробовать изменить конвертер, чтобы вернуть "красный" или "зеленый", а не True/False (и соответственно изменить триггер). Я видел какое-то странное поведение с триггерами WPF при использовании NULL или Booleans в том, что он "отключает" свойство, если оно противоположно вашему значению триггера, вместо использования другого значения триггера.
Что касается их отладки.. Мне бы хотелось узнать, есть ли лучший способ, чем методы хака и надежды, которые я обычно использую для отладки XAML: D