Ich erstelle ein N-Tier-WPF-MVVM-Projekt. Ich möchte eine Liste von Elementen aus der Datenbank abrufen, die in einer Listbox angezeigt werden sollen. Ich möchte das Listenfeld an eine Eigenschaft im ViewModel (VM) binden. Das Problem ist, die Bindung funktioniert bei mir nicht, die Listbox ist immer leer. Wenn ich einen Haltepunkt auf "Rücksende-Tags" setze, wird es vollständig ausgefüllt, bevor das Formular angezeigt wird.WPF Listbox Bindungsprobleme
Die DataContext = App.ViewModel;
im MainWindow() - Konstruktor.
In meiner XAML
<ListBox ItemsSource="{Binding Tags, Mode=OneWay}" Height="161" HorizontalAlignment="Left" Margin="236,6,0,0" Name="lstTags" VerticalAlignment="Top" Width="130" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Tags.Name}" />
<TextBlock Text="{Binding Tags.Description}" />
<!--<CheckBox IsChecked="{Binding Deleted, Mode=TwoWay}"/>-->
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
In meiner VM: Wenn ich einen Haltepunkt setzen auf "return-Tags" es ist voll bestückt.
private TagCol _tags;
public TagCol Tags
{
get {
TagColData tcd = new TagColData();
_tags = tcd.LoadAll();
//NotifyPropertyChanged("Tags");
return _tags;
}
set {
_tags = value;
NotifyPropertyChanged("Tags");
}
}
TagCol:
public class TagCol { privat ObservableCollection _tagCol = new ObservableCollection();
/// <summary>Collection (list) of Tag objects</summary>
public ObservableCollection<Tag> Collection {
get { return _tagCol; }
set
{
_tagCol = value;
}
}
public TagCol()
{
}
}
Haben Sie den DataContext des MainWindow (oder eines übergeordneten Steuerelements der ListBox) auf eine Instanz Ihrer Ansichtsmodellklasse gesetzt? – Clemens
könnten Sie bitte die Definition von 'TagCol' –
Verwenden Sie Snoop, um die Bindungen und die Steuerelemente zur Laufzeit zu untersuchen. TagCol muss IEnumerable implementieren, damit dies funktioniert. – Will