15

私は非常に単純なことをしようとしています。bool にバインドされた ToggleButton.IsChecked プロパティがあります。背景を赤 (偽) と緑 (真) の間で切り替える必要があります。しかし、何らかの理由で、赤と背景なしの間でトグルしているようです。コンバーターを使用して、ソースから適切な通知を受け取っているかどうかを確認しましたが、1 つのトリガー (false/red) が機能し、もう 1 つのトリガー (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>

更新:トグルボタンをチェックボックスに変更したところ、機能しました。理由がわからない...

4

2 に答える 2

7

WPF インスペクターを使用してみてください。

https://wpfinspector.codeplex.com/

実行中の WPF アプリケーションにアタッチしたら、Ctrl キーを押しながらクリックして、問題の要素を強調表示します。次に、トリガーを含むビジュアル ツリー内の要素 (親の場合もあります) を選択します。トリガー タブをクリックすると、現在の評価が表示されます (例: True == True)。データトリガー条件が満たされると、小さなアイコンがオレンジ色 (点灯) になります。

于 2011-05-03T21:32:03.027 に答える
1

True/Falseではなく「red」または「green」を返すようにコンバーターを変更してみてください(それに応じてトリガーを変更してください)。別のトリガー値を使用するのではなく、トリガー値の反対である場合にプロパティを「設定解除」するという点で、NULLまたはブール値を使用すると、WPFトリガーで奇妙な動作が見られました。

それらのデバッグに関しては.. XAMLのデバッグに一般的に使用するハックと希望の方法よりも良い方法があるかどうか知りたいです:D

于 2009-01-05T14:12:09.270 に答える