Ich versuche, eine Combobox zu bekommen, um mit der Bindung zu arbeiten, damit ich sie für einige Einstellungen verwenden kann. Ich kann die Objekte aus einer beobachtbaren Sammlung auffüllen und 'SelectedItem' an eine Eigenschaft SelectedItem="{x:Bind SelectedComboBoxOption}"
Aber wenn ich die Auswahl ändere, wird dies nicht in dem Textfeld angezeigt, das auch an diese Eigenschaft gebunden ist. Im Code dahinter legt die Eigenschaft beim Start die Eigenschaft fest, nicht jedoch beim Ändern von Elementen in der Combobox. Ich muss etwas vermissen, aber mir ist nicht klar, was. Irgendwelche Ideen?
Dies ist das XAML:
%Vor%
Und das ist der Code dahinter:
%Vor% Wie @Mike Eason und @kubakista sagten, musst du Mode
explizit setzen. Aber das wird Ihr Problem nicht vollständig beheben.
In Ihrem Code ist Ihre SelectedComboBoxOption
eine Zeichenfolge, aber SelectedItem
ist ein ComboBoxItem
-Objekt. Das Binden von String
an SelectedItem
ändert nicht das ausgewählte Element von ComboBox
. Wenn Sie also SelectedComboBoxOption
verwenden möchten, um ComboBox
's ausgewählten Artikel zu erhalten und zu setzen, müssen Sie SelectedComboBoxOption
in ComboBoxItem
ändern und eine Convert in {x:Bind}
verwenden, um zwischen Object
und ComboBoxItem
zu konvertieren. .
Der Convert könnte gefallen:
%Vor%Der XAML mag mögen:
%Vor%Im Code-Behind:
%Vor% Wenn Sie nur ausgewählte Objekte in TextBlock
anzeigen möchten, gibt es einen einfachen Weg. Wir können TextBlock
s Text
Eigenschaft an ComboBox
s SelectedItem
binden. Beachten Sie, dass der Typ von SelectedItem
System.Object
und {x:Bind}
stark typisiert ist und den Typ jedes Schritts in einem Pfad auflöst. Wenn der zurückgegebene Typ das Mitglied nicht enthält, wird es bei der Kompilierung fehlschlagen. Daher müssen wir einen Cast angeben, um den realen Typ des Objekts zu binden. Aber es gibt ein Problem , während die geschachtelte Klasse in% co_de umgewandelt wird %. Wir können {x:Bind}
aus ComboBoxItem
als Workaround verwenden.
Und im XAML:
%Vor% Standardmäßig ist x:Bind
auf OneTime
eingestellt. Sie können dies beheben, indem Sie einfach den Modus auf OneWay
setzen.