Я создаю проект mvvm wpf для N-уровня. Я хочу получить список элементов из db для отображения в списке. Я хочу привязать listbox к свойству в ViewModel (VM). Проблема в том, что привязка не работает для меня, список всегда пуст. Когда я ставлю точку останова на «return Tags», она полностью заполняется до того, как будет показана форма.Проблемы с привязкой WPF-списка
DataContext = App.ViewModel;
в конструкторе MainWindow().
В моем 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>
В моей VM: Когда я ставлю точку останова на «возвращение Теги» он полностью заполнен.
private TagCol _tags;
public TagCol Tags
{
get {
TagColData tcd = new TagColData();
_tags = tcd.LoadAll();
//NotifyPropertyChanged("Tags");
return _tags;
}
set {
_tags = value;
NotifyPropertyChanged("Tags");
}
}
TagCol:
общественного класса TagCol { частный ObservableCollection _tagCol = новый ObservableCollection();
/// <summary>Collection (list) of Tag objects</summary>
public ObservableCollection<Tag> Collection {
get { return _tagCol; }
set
{
_tagCol = value;
}
}
public TagCol()
{
}
}
Вы установили DataContext MainWindow (или любой родительский элемент управления ListBox) в экземпляр класса вашей модели представления? – Clemens
Не могли бы вы включить определение «TagCol»? –
Используйте Snoop для проверки привязок и элементов управления во время выполнения. Для этого TagCol должен реализовать IEnumerable. – Will