Привязка ListBox ItemsSource работает через код, но не через XAML - PullRequest
4 голосов
/ 13 января 2011

У меня есть этот XAML:

<ListBox x:Name="MyItemsList"                         
     ItemsSource="{Binding MyItems}" 
     SelectionChanged="ItemsList_SelectionChanged">

Код, назначенный тексту данных, присваивается модели представления:

DataContext = App.ViewModel;

Мой объект ViewModel определяет MyItems (и я инициализирую MyItems перед установкой DataContext):

public ObservableCollection<Item> MyItems;

Конечным результатом является то, что мой ListBox ничего не отображает. Я пытался добавить элементы после привязки, и они тоже не отображаются.

Что работает, если я задаю ItemsSource в коде, а не в XAML:

MyItemsList.ItemsSource = App.ViewModel.MyItems;

Любые советы о том, почему это произойдет? Спасибо.

1 Ответ

2 голосов
/ 13 января 2011

public ObservableCollection MyItems;- Поле, но вы должны использовать свойство!

Свойство с резервным полем:

private ObservableCollection<Item> _myItems = new ObservableCollection<Item>();
public ObservableCollection<Item> MyItems{get{return _myItems;}}

Если вы хотите установить, вы должны реализовать INotifyPropertyChanged и вызвать OnPropertyChanged ("MyItems")

...