![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
albert21 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 10.1.2006 Репутация: нет Всего: нет |
Всем привет.
Недавно начал изучать WPF. Разбираю вопрос привязки данных к элементам управления. Задача типовая: Есть список с объектами пользовательского класса (у меня класс содержит две строки - имя, фамилию). Необходимо подвязать этот список к элементу управления ListBox. Вот примеры реализации http://msdn.microsoft.com/ru-ru/library/aa970558.aspx, http://msdn.microsoft.com/ru-ru/magazine/cc163299.aspx В них приведены различные варианты решения. В одном используется <ObjectDataProvider/> и класс который возвращает список элементов, в другом создаётся класс-наследник от ObservableCollection<класс элемента списка>. Рассмотрев их я так и не пришёл к чёткому пониманию того как подвязывать данные ![]() Ключевая строчка: <ListBox ItemsSource="{Binding Source={???} Path={???}}"/> 1) Что можно и нужно указывать для свойств Source и Path? 2) Каким условиям должны удовлетворять значения этих свойств? Например:
Можно ли подвязаться к list? --------------------
http://www.certifications.ru/publicresults.php?tu_id=45939 |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 9 Всего: 67 |
albert21, list лучше превратить в DependencyProperty.
Source="имя_объекта_класса_window1" Path="имя_свойства_представляющего =_list" -------------------- СУВ, Partizan. |
|||
|
||||
rooks |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 28.9.2008 Где: Минск Репутация: 5 Всего: 9 |
Привязку данных можно делать и в code behind.
|
||||
|
|||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 9 Всего: 67 |
rooks, это не дело...
-------------------- СУВ, Partizan. |
|||
|
||||
albert21 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 10.1.2006 Репутация: нет Всего: нет |
Ок.
1) в Source записывается имя public класса-владельца объекта-источника данных 2) в Path записывается имя public свойства представляющего объекта-источника данных Могу ли я получить значение индекса текущего элемента в источнике данных (в примере источником служит список list)? Что -то вроде "{Binding Source={StaticResource MyFriends}, Path=LIST[current_item].SURNAME}" --------------------
http://www.certifications.ru/publicresults.php?tu_id=45939 |
|||
|
||||
rooks |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 28.9.2008 Где: Минск Репутация: 5 Всего: 9 |
2Partizan просто я не знаю как сделать по-другому, было бы не плохо посмотреть на пример...
2albert21 если нужно, чтобы в списке отображались фамилии можно: 1. Переопределить в "класс элемента списка" метод ToString(), но это не очень красиво. 2. Написать DataTemplate для элементов листбокса, например так:
|
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 9 Всего: 67 |
rooks, я ж говорю - превратить его в DependencyProperty
![]() -------------------- СУВ, Partizan. |
|||
|
||||
albert21 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 10.1.2006 Репутация: нет Всего: нет |
С DataTemplate я тоже видел пример, там ещё в разметке XAML для ListBox указывается свойство IsSynchronizedWithCurrentItem="True".
А механизма прямого обращения к текущему элементу нет? Напиши пожалуйста подробнее о DependencyProperty применительно к теме? --------------------
http://www.certifications.ru/publicresults.php?tu_id=45939 |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 9 Всего: 67 |
albert21,
в данном случае вполне можно обойтись public свойством в приватным setter-ом. Что касается DependencyProperty, то вот например так:
-------------------- СУВ, Partizan. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |