Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ListBox + Picture + data binding 
:(
    Опции темы
infarch
Дата 29.8.2011, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: нет
Всего: 1



Здравствуйте.

У меня такая задача: есть массив объектов Photo, каждый из них имеет такие проперти:

1. FileName - имя файла с картинкой
2. Name - ее имя
3. IsDownloaded - когда файл скачан из нета, выставляется в true

Теперь я делаю ListBox и байндаю его с  этим массивом. Пока все хорошо, вижу список картинок.
Следующий шаг - это отобразить изображение из выбранного в списке объекта. Для этого использую PictureBox. И вот вопрос - как правильно связать данные чтобы для выбранного объекта PictureBox отображал актуальное состояние?
Другими словами:

1. Фотка не закачана : отображаем некую картинку заглушку
2. Фотка закачана - отображаем ее.

Картинки качаются в бекграунде, процесс может быть остановлен или запущен в любой время. Можно ли сделать такое через data binding, или придется извращаться?

Это сообщение отредактировал(а) infarch - 29.8.2011, 16:03
PM MAIL   Вверх
jonie
Дата 29.8.2011, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



Цитата(infarch @  29.8.2011,  16:03 Найти цитируемый пост)
Можно ли сделать такое через data binding, или придется извращаться?
можно. 
Простой вариант (без учета того что память может кончится):
Надо сделать обычный класс, содержащий string Name и Bitmap Photo.
По умолчанию Photo указывает на некий static Bitmap DefaultPhoto (инициализируем в конструктор).
Далее там качаем. bool IsDownloaded превращается в Photo == DefaultPhoto .

В этом классе реализуем INotifyPropertyChanged интерфейс.
Далее берем коллекцию, реализующую INotifyCollectiionChanged. Например BindingList<T>.

Далее: биндирг производит стандартными средствами. Лист биндим на нашу коллекцию, а картинку на Current навигатора. И вуаля - всё как надо...

Это сообщение отредактировал(а) jonie - 29.8.2011, 18:21


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
infarch
Дата 30.8.2011, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: нет
Всего: 1



Ха, я уже практически так и сделал! Рад слышать что не изобрел велосипед, спасибо.
Только вот со списком несколько неувязка - пришлось использовать CheckedListBox, а у него нет свойства DataSource так что заполняю его в ручную. В моем случае это не страшно так как колличество фоток не меняется. Но всетаки интересно нельзяли забайндать CheckedListBox на список?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0712 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.