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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Binding Count ObservableCollection 
V
    Опции темы
DenWPF
Дата 17.7.2010, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



есть класс Catalog - он биндится к treeview а в нем есть ObservableCollection Podcatalog

вот хочу прибиндить к treeview количество Podcatalog-ов.

смотрел примеры но все не так как то делают, вообщем не получилось.
PM MAIL   Вверх
fvoice
Дата 19.7.2010, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



не понятно куда это количество должно выводится? в заголовок родительской ноды? тогда

Код

              <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Childrens}">
                  <TextBlock Text={Binding Converter={StaticResource ConverterName}}" />
                </HierarchicalDataTemplate>
              </TreeView.ItemTemplate>


где ConverterName конвертер который получит ваш объект Catalog и вернет вам строку наподобе Name + items.Count()
биндинг без указания path вернет datacontext, а в treeviewitem в контексте, если мне память не изменяет как раз лежит ваш объект Catalog
PM MAIL   Вверх
DenWPF
Дата 20.7.2010, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



спасибо, но теперь проблема, он не обновляется =( и на какое свойство сделать обновление?

Это сообщение отредактировал(а) DenWPF - 20.7.2010, 07:44
PM MAIL   Вверх
fvoice
Дата 20.7.2010, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Что то я сразу не додумался, сделайте вычисляемое поле в объекте которое будет возвращать нужную инфу в заголовок, забиндите на него без всяких конвертеров и реализуйте для объекта интерфейс INotifyPropertyChanged.. 
PM MAIL   Вверх
DenWPF
Дата 20.7.2010, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



я про бывал...но у меня что то не так выходит..его же надо обновлять когда происходит добавление\удаление элементов ... но я там не чего не миогу записать
PM MAIL   Вверх
fvoice
Дата 21.7.2010, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а ItemsSource у дерева вы переприсваиваете? или оно забиндено куда-то?
если забиндено, то какой тип коллекции? используйте ObservableCollection, он умеет вызывать события на добавление удаление элементов.

Добавлено @ 08:34
может вам чем то поможет, пример моего контрола на основе дерева, который в итемсорс принимает плоскую коллекцию, и самостоятельно строит дерево..

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

Это сообщение отредактировал(а) fvoice - 21.7.2010, 08:38

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  EasyTreeView.7z 4,00 Kb
PM MAIL   Вверх
DenWPF
Дата 21.7.2010, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



забиндин к DataContext через ObservableCollection и делаю.
но как свойство Count отправить на обновление при изменнении коллекции не знаю.
PM MAIL   Вверх
fvoice
Дата 21.7.2010, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

public ObservableCollection<object> Childrens{get; set;}
..
//где то в конструкторе или на сеттере
Childrens.CollectionChanged += Items_CollectionChanged;
..
//реализация INotifyPropertyChanged
PropertyChanged(this, new PropertyChangedEventArgs(property));
..
void Items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{     
     //Обновим Count и/или другие свойств объекта на которые забинден Header итема дерева
     PropertyChanged(this, new PropertyChangedEventArgs("Count"));
}


Это сообщение отредактировал(а) fvoice - 21.7.2010, 12:00
PM MAIL   Вверх
DenWPF
Дата 21.7.2010, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



что то не так:

Код

public Category() 
        {
            _podcategory.CollectionChanged += Items_CollectionChanged;
        }
        void Items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            PropertyChanged(this, new PropertyChangedEventArgs("Count")); - тут ошибка
        }

пишет не задана ссылка на объекет хотя я не могу понять на какой объект.
PM MAIL   Вверх
fvoice
Дата 21.7.2010, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



PropertyChanged на null проверка нужна, но странно, раз он null значит на него никто не подписан, значит биндинг не работает.. или может это на этапе инициализации только
PM MAIL   Вверх
DenWPF
Дата 21.7.2010, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



new PropertyChangedEventArgs("Count") - не null. хотя и не какой полезной инфы в нем не нашел
ObservableCollection - тоже


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




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


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

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