powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Binding для вложенных данных, как реализовать
7 сообщений из 7, страница 1 из 1
Binding для вложенных данных, как реализовать
    #38352740
Fet Frumos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть класс данных, привожу упрощенную схему
Код: 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
Binding для вложенных данных, как реализовать
    #38385877
Fet Frumos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вернулся снова к этой задаче. Отобразить получилось - оказывается в WPF есть такой вариант биндинга - MyData/Data1/Data2.
Т.е. для первый столбец ItemSource ={Binding MyData},
второй - ItemSource ={Binding MyData/Data1},
третий - ItemSource ={Binding MyData/Data1/Data2}.
Это работает, но теперь надо придумать выравнивание по высоте для строк - что бы было понятно что к чему относится. Буду благодарен за идеи.
...
Рейтинг: 0 / 0
Binding для вложенных данных, как реализовать
    #38388610
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для первой коллеции сделать айтим темплит в виде стек-панели. В стек-панели привязать текстблок на элементы Дата1 и листбокс на элементы Дата2. Как-то так. Вобщем, если у вас иерархия в коллеции, то в вашем случае надо реализовать иерархию и в представлении.
...
Рейтинг: 0 / 0
Binding для вложенных данных, как реализовать
    #38388611
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, TreeView сделать?
...
Рейтинг: 0 / 0
Binding для вложенных данных, как реализовать
    #38388614
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Binding для вложенных данных, как реализовать
    #38388615
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Binding для вложенных данных, как реализовать
    #38395665
Fet Frumos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TreeView подошел бы отлично, но по постановке задачи должно развертываться не вниз а по ширине(хотя это можно сделать - нашел линк ). Получилось реализовать через вложенные ListBox
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Binding для вложенных данных, как реализовать
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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