Ich habe ein Benutzersteuerelement in WPF erstellt:
%Vor%Der hinterstehende Code hat einen Parameter namens "FirstMessage", den er als Text meines Benutzersteuerelements TextBlock festlegt:
%Vor%In meinem Hauptcode kann ich den FirstMessage-Parameter in meinem Benutzersteuerelement mit intellisense:
festlegen %Vor%Der Text wird jedoch immer noch nicht festgelegt. Ich habe versucht, Text="{Binding Path = FirstMessage}" und andere Syntaxen, die ich gefunden habe, aber nichts funktioniert.
Wie kann ich auf den FirstMessage-Wert in meinem Benutzersteuerelement zugreifen?
Ihr Bindungsansatz funktioniert nicht, da Ihre Eigenschaft FirstMessage nicht benachrichtigt, wenn sie aktualisiert wird. Verwenden Sie dazu Abhängigkeitseigenschaften. Siehe unten:
%Vor%XAML:
%Vor%Wenn sich die FirstMessage-Eigenschaft ändert, aktualisiert sich der Textblock selbst.
FirstMessage wird gesetzt, nachdem der Konstruktor aufgerufen wurde. Sie sollten Ihren Text vom Set von FirstMessage ändern.
Beim Initialisieren eines Objekts von XAML wird zuerst der Standardkonstruktor aufgerufen, dann werden die Eigenschaften für das Objekt festgelegt.
In diesem kurzen Beispiel wird keine Bindung verwendet, da der Wert erst nach dem Aufruf des Standardkonstruktors eingerichtet wird, aber hier können Sie sehen, wie der Text angezeigt wird.
%Vor%Dann ändern Sie einfach Ihre CS-Datei zu diesem:
%Vor%Ich empfehle, stattdessen an der Einrichtung einer Bindung zu arbeiten, da dies ziemlich Spaghetti-ähnlicher Code ist.
Bei dem oben angegebenen Code handelt es sich um ein Timing-Problem. Die FirstMessage-Eigenschaft wurde nicht zugewiesen, wenn der Konstruktor ausgeführt wird. Sie müssten diesen Code in einem späteren Ereignis wie Loaded ausführen.
Tags und Links wpf user-controls