Ich habe zwei Projekte. Der eine arbeitet und der andere nicht, aber die Unterschiede zwischen ihnen sind nichts, was ich für "wichtig" halte. Das erste Projekt ist das, das gebrochen ist und es ist das, das ich versuche zu beheben. Das zweite Projekt ist ein kleines Beispielprojekt, das ich erstellt habe, wenn das erste Projekt überhaupt nicht funktioniert. Natürlich funktioniert das Beispiel perfekt. HierCombobox nicht richtig an SelectedItem binden
ist die Ansicht für das erste Projekt. Ich habe eine Reihe von "MainWindowTabControlStyle" entfernt, weil nur das Kombinationsfeld kaputt ist. Ich bin mir sicher, dass das Problem nicht im Stil liegt, weil es ein Kopieren und Einfügen aus dem Projekt ist, das funktioniert.
Hier ist das Ansichtsmodell, das auf den DataContext des MainWindow festgelegt ist. Die ViewModelBase-Klasse ist genau derselbe Code, den Josh Smith in diesem MSDN-Artikel dieses Monats geschrieben hat.
public sealed class MainWindowViewModel : ViewModelBase
{
public MainWindowViewModel()
{
}
private ObservableCollection<Subscription> subscriptions;
public ObservableCollection<Subscription> Subscriptions
{
get
{
if (subscriptions == null)
{
subscriptions = new ObservableCollection<Subscription>();
subscriptions.Add(new Subscription() { DisplayName = "ABC" });
subscriptions.Add(new Subscription() { DisplayName = "XYZ" });
subscriptions.Add(new Subscription() { DisplayName = "PDQ" });
}
return subscriptions;
}
set { subscriptions = value; }
}
private Subscription selectedSubscription;
public Subscription SelectedSubscription
{
get { return selectedSubscription; }
set { selectedSubscription = value; }
}
}
Als ich das Projekt von dem Debugger das erste Think ausführen, ist der Getter für die Abonnements Sammlung genannt wird. Dann wird der Setter bei SelectedSubscription aufgerufen (es ist null). Danach kann ich das ausgewählte Element in der Combobox ändern, bis ich im Gesicht blau bin und der Setter für die SelectedSubscription -Eigenschaft nicht wieder geändert wird. Es ist wichtig zu beachten, dass die Combobox die richtigen Werte enthält. Im zweiten Projekt ist der Code identisch, aber das erste, was aufgerufen wird, ist der Setter für die SelectedSubscription -Eigenschaft (es ist null), dann wird der Getter für die Subskriptions-Sammlung aufgerufen und schließlich wird der Setter für die SelectedSubscription mit a bezeichnet das zweite Mal und es hat einen Wert, der dem ersten Element in der Subskriptionsauflistung entspricht.
Dieses kleine Juwel hat mich kosten ca. 5 Stunden, wenn Sie irgendwelche Ideen überhaupt haben ich bin bereit, es zu versuchen.
Dank
Versucht, dass es aber nicht funktioniert. Eines der Dinge, die ich im ursprünglichen Beitrag hervorheben wollte, ist, dass ich ein anderes Projekt mit genau dem gleichen View- und ViewModel ... kopiere und hinter Zeile für Zeile habe. Das andere Projekt funktioniert gut. –
Eigentlich, nachdem ich geschrieben habe, dass ich anfing, verbindliche Probleme mit einer Silverlight Combobox zu bekommen, ist es vielleicht ansteckend. – geofftnz