Связать ли данные со списком WPF? - PullRequest
1 голос
/ 01 сентября 2009

Как мне связать список со списком, который у меня есть в файле класса содержащего окна? Я посмотрел, и есть свойство ItemsSource, которое я могу установить, но я не уверен, что это то, что я хочу, и я не уверен, что его установить.

Ответы [ 4 ]

3 голосов
/ 01 сентября 2009

Это очень широкий вопрос. Лучше всего прочитать начальную тему в MSDN.

3 голосов
/ 01 сентября 2009

Я понял: согласно этому шпаргалке , мне нужно было использовать следующее:

ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=Categories}"

где в качестве пути задано имя свойства, содержащего список строк, с которыми вы хотите связать.

3 голосов
/ 01 сентября 2009

Вот и все:

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

Затем установите свой DataContext для некоторого набора строк и все. Если вы не хотите связывать напрямую с DataContext, вы можете сделать это, но вы можете захотеть поместить это в свой собственный контроль, чтобы лучше разделить функциональность в любом случае.

0 голосов
/ 02 сентября 2009

Вот еще несколько способов сделать это:

Один из них - сделать список статическим свойством класса окна, а затем связать его следующим образом:

{Binding Source={x:Static local:MyWindow.MyList}}

Обычно вы делаете это, только если вы хотите, чтобы все экземпляры окна использовали один и тот же список, конечно.

Другой способ - добавить список в коллекцию Resources окна, поставив

Resources.Add("MyListKey", MyList);

в конструкторе, перед вызовом InitializeComponent. (Ключ должен быть в словаре ресурсов до того, как будет выполнено расширение разметки StaticResource.) Затем вы можете привязать его к этому так:

{Binding Source={StaticResource MyListKey}}
...