UWP Combobox-Bindung an die SelectedItem-Eigenschaft

8

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}"

binden

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%     
RonaldA 20.11.2015, 07:59
quelle

2 Antworten

10

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.

%Vor%

Und im XAML:

%Vor%     
Jay Zuo 20.11.2015, 11:19
quelle
0

Standardmäßig ist x:Bind auf OneTime eingestellt. Sie können dies beheben, indem Sie einfach den Modus auf OneWay setzen.

%Vor%     
Mike Eason 20.11.2015 08:22
quelle

Tags und Links