WPF Отладка отправителей данных? - PullRequest
14 голосов
/ 05 января 2009

Я пытаюсь сделать что-то очень простое. У меня есть свойство 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>

Обновление : я переключил тумблер на флажок, и он работает. Понятия не имею, почему ...

Ответы [ 2 ]

7 голосов
/ 04 мая 2011

Попробуйте использовать WPF Inspector:

https://wpfinspector.codeplex.com/

После того, как вы присоединитесь к запущенному приложению WPF, выделите соответствующий элемент, удерживая нажатой клавишу Ctrl + нажатие на него. Затем выберите элемент в визуальном дереве (может быть родительским), который содержит триггер. Нажмите на вкладку триггеров, и вы увидите текущую оценку (например, True == True). Если условие источника данных выполнено, маленький значок будет оранжевым (светится).

1 голос
/ 05 января 2009

Мне кажется, можно попробовать изменить преобразователь так, чтобы он возвращал «красный» или «зеленый», а не «Истина / Ложь» (и соответственно измените триггер). Я видел странное поведение с триггерами WPF при использовании NULL или логических значений в том смысле, что оно «отменяет» свойство, если оно противоположно вашему значению триггера, вместо использования другого значения триггера.

Что касается их отладки. Я хотел бы знать, есть ли лучший способ, чем методы взлома и надежды, которые я обычно использую для отладки XAML: D

...