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%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%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]
Nicht an ToString()
binden. Stattdessen führen Sie eine FullName
-Eigenschaft ein und erhöhen Sie OnPropertyChanged("FullName")
in beiden anderen Eigenschaften-Sätzen.
Tags und Links wpf data-binding