Ich habe mir schon seit einiger Zeit den Kopf dagegen gedreht. Ich bin mir nicht wirklich sicher, warum es nicht funktioniert. Ich bin immer noch ziemlich neu in diesem ganzen WPF-Geschäft.
Hier ist mein XAML für die Combobox
%Vor%Hier wird die ComboBox gefüllt (myAssembly ist eine Klasse, die ich mit einer Liste möglicher Typen erstellt habe)
%Vor%Ich setze den DataContext in einem übergeordneten Element der ComboBox im folgenden Code:
%Vor%Ich möchte, dass die Bindung den richtigen "möglichen Typ" aus dem Kombinationsfeld auswählt. Es wählt nichts aus. Ich habe SelectedValue und SelectedItem versucht. Als ich den DisplayMemberPath des ComboBox zu einer anderen Eigenschaft änderte, änderte es, was angezeigt wurde, also weiß ich, dass es nicht vollständig gebrochen ist.
Irgendwelche Ideen ???
Setzen Sie im XAML ItemsSource="{Binding}"
und (im Code hinter) setzen Sie DataContext
auf myAssembly.PossibleTypes
.
Sie können die Bindung auch im xaml und nicht im Code-Behind setzen (wir vermeiden den Code in unseren xaml-Seiten, wo immer es möglich ist). Ich nehme an, dass myAssembly eine Eigenschaft auf Ihrem Code-Behind für das Steuerelement ist und eine Instanz Ihrer MyAssembly-Klasse ist ...
%Vor%Es mag nur eine persönliche Präferenz sein, aber ich denke, es ist besser, die Datenbindungen in der xaml zu haben, da es einfacher ist, zu sehen, an was jedes Steuerelement gebunden ist, ohne den Code-behind durchgehen zu müssen. Wenn Sie in Ihrem Code auch auf Ihre ComboBox verweisen möchten, sollten Sie ihr im xaml eine Eigenschaft x: Name und nicht nur Name zuweisen.
Ich stimme zu: Bindungen sollten im XAML sein. Ich habe ... überhaupt nichts in den Code geschrieben. Datenquellen sind alle wiederverwendbare "Ressourcen".
(OK, der Code-Behind-Konstruktor ruft InitializeComponent () auf).
Tags und Links wpf .net data-binding combobox