2010-12-28 30 views
1

私はオブジェクトに 'タグ'プロパティをバインドするトグルボタンを持っています。次に、 'IsChecked'プロパティを 'Tag'プロパティにバインドします。 私の問題は、 'IsChecked'が最初にウィンドウが読み込まれ、 'Tag'が最初に呼び出されるということです。 どうすれば 'タグ'プロパティを最初にバインドできますか?WPFバインド順序 - 変更方法

<ToggleButton> 

    <ToggleButton.Tag> 
     <Bind An Object...> 
    </ToggleButton.Tag> 

    <ToggleButton.IsChecked> 
     <Binding Converter="{StaticResource SomeConverter}" Path="Tag" RelativeSource="{RelativeSource Self}"/> 
    </ToggleButton.IsChecked> 

</ToggleButton> 

答えて

4

注文が問題となるのはなぜですか?これは、値がnullの場合は、Binding.DoNothingを返してもコンバーターがケースを処理しないためですか? Tagを何かに設定すると、IsCheckedバインディングがリフレッシュされ、コンバータが再度実行されます。そうじゃないの?

+0

あなたは正しいです。あなたの答えごとに私は自分のバインディングを再チェックして間違いを見つけました。確かに、 'タグ'バインディングが変更されると、IsCheckedバインディングコンバータが再度呼び出されます。 – OrPaz

1

あなたは、あなたがTagIsChecked結合dependendを持っていない、あなたは競合状態に気をいけないし、あなたが必要としない、TagIsCheckedに直接(あなたがTagに結合するものをソース)このソースをバインドすることができます任意の順序。

+0

ありがとうございます。しかし、ケントは私の問題を解決しました。私はまた、すべてのプロパティが依存関係の小道具であるため、競合条件は存在しないと考えています。 – OrPaz