Binden einer benutzerdefinierten Ansicht in Xamarin.Forms

8

Ich habe ein Problem beim Binden von Daten in einer benutzerdefinierten Ansicht in Xamarin-Formularen an das Ansichtsmodell der enthaltenden Seite.

Meine benutzerdefinierte Ansicht ist sehr einfach, ein Paar Beschriftungen, die ein Schlüsselwertpaar darstellen:

%Vor%

mit dem Code dahinter:

%Vor%

Dies wird auf einer Seite wie folgt verbraucht:

%Vor%

Das Problem besteht darin, dass die Schlüsselzeichenfolge wie erwartet angezeigt wird, die Wertezeichenfolge jedoch nicht. Ich habe versucht, ein PropertyChanged-Ereignis für die Eigenschaft document_number zu erzwingen, das hat nicht geholfen. Ich habe auch versucht, die Text-Eigenschaft auf den Etiketten während des Setter der Schlüssel / Wert-Eigenschaften der benutzerdefinierten Ansicht explizit festzulegen:

%Vor%

Auch das half nicht, der Setter-Code scheint nie ausgeführt zu werden (Ich habe einen Haltepunkt darauf gelegt und es wurde nicht getroffen)

Wenn ich ein direktes Steuerelement wie beispielsweise ein direkt an die Eigenschaft auf der Seite gebundenes Label hinzufüge, wird dies korrekt angezeigt:

%Vor%

Kann jemand erklären, warum das passiert (oder eher nicht passiert)?

    
MikeW 16.09.2015, 10:50
quelle

2 Antworten

21

Weisen Sie keine Bindungen intern in benutzerdefinierten Steuerelementen zu. Verwenden Sie dies:

%Vor%

Behandle Eigenschaften (zB Value) als Referenzen auf BindableProperty (ValueProperty). Wenn Sie etwas tun, wird Value-Setzer BindableProperty nicht darüber benachrichtigt UND umgekehrt, wenn Sie etwas mit BindableProperty (Wert ValueProperty zuweisen / ändern) - Eigenschaft Value Setter wird nicht aufgerufen werden.

Wenn Sie mit PropertyChanged arbeiten möchten, haben Sie eine Überschreibung für dieses (OnPropertyChanged) oder Actions (als zusätzliche Parameter beim Erstellen von BindableProperty).

    
Daniel Luberda 16.09.2015, 14:03
quelle
0

Ich konnte das schaffen, indem ich

mache %Vor%

und machen Sie dies in der Datei xaml.cs für die Ansicht, in der Sie die benutzerdefinierte Ansicht verwenden:

%Vor%

Für ein Eingabefeld, das mir Probleme gab, musste ich sicherstellen, dass der Parameter defaultBindingMode auf TwoWay gesetzt war.

    
Jyosua 13.02.2018 19:04
quelle

Tags und Links