WPF-Bindung - Notify Change to ToString-Wert

8

Ich habe einen Textblock, der an ein Objekt gebunden ist. Dieses Objekt Ich habe ToString überschrieben, um eine Kombination aus 2 anderen Eigenschaften zurückzugeben. Wie kann ich mitteilen, dass der ToString-Wert geändert wurde, wenn einer der Eigenschaftswerte aktualisiert wird?

Leider kann ich die Bindung nicht an den ToString-Wert ändern, da dies innerhalb eines Drittanbieter-Steuerelements liegt. Daher müssen Sie in der Lage sein, direkt zu benachrichtigen.

Hoffentlich wird die Klassendefinition unten klarstellen, was ich meine:

%Vor%     
David Ward 19.02.2010, 12:18
quelle

4 Antworten

2

Ich nehme an, wenn Sie sagen, dass das Steuerelement an ToString () "binding" ist, wird Ihr Objekt als Content on ContentControl irgendwo innerhalb des unzugänglichen Codes verwendet, der standardmäßig einen TextBlock erstellt, der den ToString-Wert anzeigt (falls nicht) Sicher kannst du das mit Snoop herausfinden). Wenn Sie in den Ressourcen des Steuerelements eine globale typisierte DataTemplate für Ihren Personentyp erstellen, können Sie damit eine andere Eigenschaft wie eine neue FullName-Eigenschaft anzeigen:

%Vor%     
John Bowen 19.02.2010, 13:53
quelle
3

Sie können eine dritte schreibgeschützte Eigenschaft hinzufügen, die ToString() zurückgibt, und OnPropertyChanged mit dem Namen dieser Eigenschaft aufrufen

    
Yurec 19.02.2010 12:21
quelle
3

Wenn Sie keine spezielle Eigenschaft für den vollständigen Namen hinzufügen möchten, sollten Sie StringFormat in Ihrer Bindung verwenden können. Sehen Sie sich das MultiBinding-Beispiel in diesem Blogpost an. [Benötigt .NET 3.5 SP1]

    
Mikael Sundberg 19.02.2010 12:27
quelle
0

Nicht an ToString() binden. Stattdessen führen Sie eine FullName -Eigenschaft ein und erhöhen Sie OnPropertyChanged("FullName") in beiden anderen Eigenschaften-Sätzen.

    
Klaus Byskov Pedersen 19.02.2010 12:22
quelle

Tags und Links