Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Binding для вложенных данных, как реализовать / 7 сообщений из 7, страница 1 из 1
02.08.2013, 12:33
    #38352740
Fet Frumos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Binding для вложенных данных, как реализовать
Есть класс данных, привожу упрощенную схему
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class MyData
    {
        public string Caption { get; set; }
        public List<Data1> ListData1 {get; set;}
    }
 
    public class Data1
    {
        public string FirstName { get; set; }
        public List<Data2> ListData2 { get; set; }
    }
 
    public class Data2
    {
        public string LastName { get; set; }
    }


данные надо вывести в следующем виде



решил сделать следующим образом - к ListBox привязываю экземпляр MyData с заполненными данными. Для него указываю DataTemplate, привожу код

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<DataTemplate x:Key="ItemTemplate">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
 
                <!--  MyData  -->
                <Grid Grid.Column="0">
 
                    <Grid.RowDefinitions>
                        <RowDefinition />
                    </Grid.RowDefinitions>
 
                    <TextBlock Grid.Row="0" Text="{Binding Caption}" />
 
                </Grid>
 
                <!--  Data1  -->
                <ListBox 
                         Grid.Column="1"
                         DisplayMemberPath = "FirstName"
                         ItemsSource="{Binding ListData1 }" />
                <!--  -->        
 
                <!--  Data2  -->
                <ListBox x:Name="lbData2"
                         Grid.Column="2"
                         DisplayMemberPath = "LastName"
                         ItemsSource="{Binding ????}" />
 
            </Grid>
        </DataTemplate>



Вопрос сделать биндинг для lbData2? Вариант ListData1.ListData2 логично не работает, а как правильно не соображу. Возможно подскажите более оптимальный вариант построения приложения.
...
Рейтинг: 0 / 0
03.09.2013, 19:02
    #38385877
Fet Frumos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Binding для вложенных данных, как реализовать
Вернулся снова к этой задаче. Отобразить получилось - оказывается в WPF есть такой вариант биндинга - MyData/Data1/Data2.
Т.е. для первый столбец ItemSource ={Binding MyData},
второй - ItemSource ={Binding MyData/Data1},
третий - ItemSource ={Binding MyData/Data1/Data2}.
Это работает, но теперь надо придумать выравнивание по высоте для строк - что бы было понятно что к чему относится. Буду благодарен за идеи.
...
Рейтинг: 0 / 0
06.09.2013, 07:33
    #38388610
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Binding для вложенных данных, как реализовать
Для первой коллеции сделать айтим темплит в виде стек-панели. В стек-панели привязать текстблок на элементы Дата1 и листбокс на элементы Дата2. Как-то так. Вобщем, если у вас иерархия в коллеции, то в вашем случае надо реализовать иерархию и в представлении.
...
Рейтинг: 0 / 0
06.09.2013, 07:34
    #38388611
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Binding для вложенных данных, как реализовать
Может, TreeView сделать?
...
Рейтинг: 0 / 0
06.09.2013, 07:35
    #38388614
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Binding для вложенных данных, как реализовать
...
Рейтинг: 0 / 0
06.09.2013, 07:37
    #38388615
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Binding для вложенных данных, как реализовать
user7320 http://www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewMode
http://msdn.microsoft.com/en-us/library/cc165616.aspx
Если данные надо только отобразить, без привязок команд и прочей функциональности, то единый для всех моделей (если у них всех есть свойство типа DisplayName) иерархический шаблон данных должен подойти. Можно, конечно, и тупо в циклах напихать TreeViewItem'ы )).
...
Рейтинг: 0 / 0
13.09.2013, 11:14
    #38395665
Fet Frumos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Binding для вложенных данных, как реализовать
TreeView подошел бы отлично, но по постановке задачи должно развертываться не вниз а по ширине(хотя это можно сделать - нашел линк ). Получилось реализовать через вложенные ListBox
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Binding для вложенных данных, как реализовать / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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