Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Один DataGrid для разных наборов данных. / 2 сообщений из 2, страница 1 из 1
06.02.2012, 18:35
    #37649167
goodw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один DataGrid для разных наборов данных.
Доброго времени суток!

Задача примерно такая: в зависимости от выбора фильтров в грид надо отображать разные данные (с разными колонками).

Вопрос: как на основе теплейтов и ресурсов сделать несколько шаблонов для одного грида с разнымы наборома колонок?

Попробовал сделать так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<ControlTemplate x:Key="testTemplate">
            <DataGrid SelectionMode="Single" AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Абонент" MinWidth="300" Width="200" Binding="{Binding Path=FactoryID}" />
                    <DataGridTextColumn Header="Точка учёта" HeaderStringFormat="" MinWidth="160" Width="160" Binding="{Binding Path=FactoryID}" />
                    <DataGridTextColumn Header="Январь" MinWidth="100" Width="50" Binding="{Binding Path=abonent.FullName}" />
                    <DataGridTextColumn Header="Февраль" MinWidth="100" Width="50" Binding="{Binding Path=abonent.FullName}" />
                    <DataGridTextColumn Header="Март" MinWidth="100" Width="50" Binding="{Binding Path=abonent.FullName}" />
                    <DataGridTextColumn Header="Апрель" MinWidth="100" Width="50" Binding="{Binding Path=abonent.FullName}" />
                    <DataGridTextColumn Header="Май" MinWidth="100" Width="50" Binding="{Binding Path=abonent.FullName}" />
                    <DataGridTextColumn Header="Июнь" MinWidth="100" Width="50" Binding="{Binding Path=abonent.FullName}" />
                    <DataGridTextColumn Header="Июль" MinWidth="100" Width="50" Binding="{Binding Path=abonent.FullName}" />
                    <DataGridTextColumn Header="Август" MinWidth="100" Width="50" Binding="{Binding Path=abonent.FullName}" />
                    <DataGridTextColumn Header="Сентябрь" MinWidth="100" Width="50" Binding="{Binding Path=abonent.FullName}" />
                    <DataGridTextColumn Header="Октябрь" MinWidth="100" Width="50" Binding="{Binding Path=abonent.FullName}" />
                    <DataGridTextColumn Header="Ноябрь" MinWidth="100" Width="50" Binding="{Binding Path=abonent.FullName}" />
                    <DataGridTextColumn Header="Декабрь" MinWidth="100" Width="50" Binding="{Binding Path=abonent.FullName}" />
                </DataGrid.Columns>
            </DataGrid>
        </ControlTemplate>





и программно назначаю шаблон:

Код: c#
1.
2.
1.dataExchangeListGrid.Template = (ControlTemplate)Resources["testTemplate"];
2.dataExchangeListGrid.ItemsSource = exchanges;





Шаблон подставляется, но данные не отображаются. Хотя в exchanges они есть.
...
Рейтинг: 0 / 0
07.02.2012, 03:20
    #37649561
sergiy_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один DataGrid для разных наборов данных.
смотри в output состояние биндингов
они у тебя не прошли
в шаблоне биндинг должен быть прописан по другому типа так
Код: xml
1.
2.
3.
4.
<ControlTemplate x:Key="testTemplate">
<DataGrid SelectionMode="Single" AutoGenerateColumns="False"
 ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid }}, Path=ItemsSource}"
>...



должно заработать
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Один DataGrid для разных наборов данных. / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]