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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание контейнеров для ItemsSource, Принудительное создание контейнеров 
V
    Опции темы
interv
  Дата 26.2.2013, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вопрос в следующем:

Есть xaml, упростил чтобы выделить главное, на самом деле у меня каждый уровень дерева со своим шаблоном, в шаблоне в ресурсе забиты данные по которым выдираются данные.
Код

    <Window.Resources>
        <HierarchicalDataTemplate x:Key="StructTree" ItemsSource ="{Binding Path=SubTable}">
            <TextBlock Text="{Binding Path=Name}" />
        </HierarchicalDataTemplate> 
    </Window.Resources>
    <TreeView Name="f_TreeLicense" ItemTemplate="{StaticResource StructTree}" />


Код

private void FillTableModel(ItemsControl control)
{
    if (control == null) return;
    if (!(control.ItemsSource is DataView)) return;
    DataTable table = (control.ItemsSource as DataView).Table;
    DataTemplate template = control.ItemTemplate;
    /*          Заполняем table в зависимости от template.resourses      */
    if (template is HierarchicalDataTemplate)
    {
        HierarchicalDataTemplate selfTemplate = template as HierarchicalDataTemplate;
        if (selfTemplate.ItemTemplate is DataTemplate)
        {
            //Тут мы создаем таблицу для дочерних элементов
            if (!table.Columns.Contains("SubTable"))
                table.Columns.Add("SubTable", table.GetType());
            foreach (object item in control.Items)
            {
                if (!(item is DataRowView)) continue;
                /*                                Вот тут возвращает null  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!      */
                ItemsControl controlItem = control.ItemContainerGenerator.ContainerFromItem(item) as ItemsControl;
                FillTableModel(controlItem);
            }
        }
    }
}

public void Конструктор()
{
    InitializeComponent();
    FillTableModel(f_TreeLicense);
}



Строка
ItemsControl controlItem = control.ItemContainerGenerator.ContainerFromItem(item) as ItemsControl;
возвращает null, хотя некоторое время спустя контейнер получить можно, видимо TreeViewItem формируется позже.

Вопрос: Можно ли отследить создание TreeViewItem или принудительно их создать какой либо командой?


Это сообщение отредактировал(а) interv - 26.2.2013, 16:26
PM MAIL   Вверх
interv
Дата 4.3.2013, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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


 




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


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

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