私はWPFでUserControlを作成していますが、これはYesNoButtonです。'連鎖' WPFバインディング
これには1つのDependencyProperty、IsCheckedがあり、2つのToggleButtonがあり、ラベルは「Yes」と「No」です。 はい ToggleButtonのIsCheckedプロパティを、親のYesNoButtonのこのIsCheckedプロパティにバインドしました。 いいえ ToggleButtonのIsCheckedプロパティを、はい ToggleButtonのIsCheckedプロパティに 'inverse boolean' IValueConverterによってバインドしました。ここに私のYesNoButtonマークアップです、マイナスの外観の一部とフリルを感じる:
私のアプリで<UserControl ...>
<StackPanel Orientation="Horizontal">
<ToggleButton x:Name="YesButton" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type Controls:YesNoButton}}, Path=IsChecked}">Yes</ToggleButton>
<ToggleButton IsChecked="{Binding ElementName=YesButton, Path=IsChecked, Converter={StaticResource BooleanToInverseConverter}}">No</ToggleButton>
</StackPanel>
</UserControl>
、次のように私はYesNoButtonを含める:
<local:YesNoButton IsChecked="{Binding Path=BoolPropertyOfDataContext}" />
ウィンドウが最初にロードし、私はBoolPropertyOfDataContextを切り替える場合他の手段でYesNoButtonは完全に反応します。
はい、いいえToggleButtonをクリックすると、YesNoButtonビジュアル状態が正しく更新されますが、BoolPropertyOfDataContextへのバインドは完全に機能しなくなります。キャンセルされたようです。私はこれらのバインディングチェーンがうまくいくと考えていたと思っていましたが、私は明らかに何かをここに逃しています!
アイデア?
ありがとうございました。既に試した(1) - 違いはありません。私はNo ToggleButtonを完全に削除しようとしましたが、まだ動作しませんでしたので、(2)は役に立たないと思います。過去に、コントロールのIsCheckedプロパティを手動で何らかの値に設定したとき、バインディングが破棄されたことがわかった。私はここで何か似たようなことが起こっていると仮定しますが、何が分からないのですか? – Ross
BoolPropertyOfDataContextはどのように実装されていますか?依存関係のプロパティですか?また、デバッガで実行すると、出力ウィンドウにメッセージが表示されますか? –
BoolPropertyOfDataContextは、Entity Framework Entityオブジェクトのブール値フィールドです(プロパティ変更通知も同様です)。残念ながら出力ウィンドウにメッセージはありません! – Ross