XAML привязка к селекции - PullRequest
0 голосов
/ 03 мая 2018

У меня есть класс, назовите его People, который реализует INotifyPropertyChanged и имеет два свойства: Имя и Фамилия.

public IList<People> myCollection;
myCollection = new ObservableCollection<People>();
myCollection.add(new People("Jerry", "Jerry");
myCollection.add(new People("Tom", "Tom");

в XAML у меня есть список с именем ListOfNames Я могу сделать:

ListOfNames.ItemsSource = myCollection;

И все работает просто отлично. У меня вопрос, как я могу назначить myCollection как ItemsSource через XAML?

С одним объектом, например:

People myPerson = new People("Tom", "Tom");

<Window.Resources>
   <local:People x:Key="myPerson" />
</Window.Resources>

<label Content="{Binding source={StaticResource myPerson}}" />

Привязка работает правильно. Тем не менее, если я попробую со списком:

<Window.Resources>
   <local:People x:Key="myCollection" />
</Window.Resources>

<ListBox ItemsSource="{Binding source={StaticResource myCollection}}" />

Ничего не отображается. Понятно, что я что-то неправильно понял и делаю это неправильно. Я предполагаю, что он ожидает объект «Люди», и получение списка объектов приводит его в замешательство, то есть на список следует ссылаться по-разному. Как это сделать, пожалуйста.

1 Ответ

0 голосов
/ 03 мая 2018

Вы не можете привязать к полю, вы должны привязать к свойству .

public ObservableCollection<> MyCollection
{
    get { return _myCollection; }
    set { _myCollection = value; }
}

<ListBox ItemsSource="{Binding Path=MyCollection}" />

Это будет работать, если вы правильно установили свой DataSource на уровне окна.

...