2010-12-28 11 views
1

Ich habe eine Umschalttaste, die ich ihre "Tag" -Eigenschaft an ein Objekt binden. Ich binde dann die Eigenschaft 'IsChecked' an die Eigenschaft 'Tag'. Mein Problem ist, dass das 'IsChecked' zuerst aufgerufen wird, wenn das Fenster geladen wird und das 'Tag' Sekunde. Wie könnte ich die "Tag" -Eigenschaft zuerst binden lassen?WPF bindende Reihenfolge - wie man ändert?

<ToggleButton> 

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

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

</ToggleButton> 

Antwort

4

Warum ist die Bestellung wichtig? Liegt es daran, dass Ihr Konverter den Fall nicht behandelt, wenn der Wert null ist, weil es sollte - selbst wenn es Binding.DoNothing zurückgibt. Wenn Tag auf etwas festgelegt ist, sollte Ihre IsChecked-Bindung aktualisiert werden und der Konverter sollte erneut ausgeführt werden. Ist das nicht der Fall?

+0

Sie haben Recht. Laut Ihrer Antwort habe ich meine Bindungen überprüft und einen Fehler gefunden. Nach der Fixierung wird der IsChecked-Bindungskonverter erneut aufgerufen, wenn sich die 'Tag'-Bindung ändert. – OrPaz

1

Sie können diese Quelle binden (Quelle, was Sie Tag Bindung) direkt an Tag und IsChecked, dann nicht Sie haben IsChecked Bindung abhängig auf Tag und Sie kümmern sich um Race-Bedingung nicht und Sie nicht brauchen jede Bestellung.

+0

Vielen Dank. Aber Kent antwortet mein Problem gelöst. Ich denke auch, dass es hier keine Rassenbedingungen gibt, da alle Eigenschaften Abhängigkeiten sind. – OrPaz

Verwandte Themen