Проблема с макетом WPF - PullRequest
       11

Проблема с макетом WPF

0 голосов
/ 10 июля 2009

У меня проблема с тем, как организовать макет экрана для моих данных.

У меня есть объект A со свойствами A1 и A2, и я могу содержать объект B.

Объект B имеет свойства B1, B2, B3 и набор из 1 или более объектов C.

Объект C содержит свойства C1, C2 и C3

Я хочу, чтобы макет был

A1   A2

или

A1   A2  B1   B2   B3  C1   C2   C3

или

A1   A2  B1   B2   B3  C1   C2   C3

                       C1   C2   C3

Я попробовал следующий Xaml, но не смог заставить объект C появляться более одного раза. Я создал табличку с данными

            <TextBlock  Text="{Binding Path=A1}" Grid.Column="0" />
    <TextBlock  Text="{Binding Path=A2}" Grid.Column="1" />
            <StackPanel Orientation="Horizontal" Name="B" DataContext="{Binding Path=B}" Grid.Column="2">
        <TextBlock  Text="{Binding Path=B1}"  />
        <TextBlock  Text="{Binding Path=B2}"  />
        <TextBlock  Text="{Binding Path=B3}"  />
        <StackPanel Orientation="Horizontal" Name="C" DataContext="{Binding Path=C}">
            <TextBlock  Text="{Binding Path=C1}"  />
            <TextBlock  Text="{Binding Path=C2}"  />
            <TextBlock  Text="{Binding Path=C3}"  />
        </StackPanel>
    </StackPanel>
        </Grid>

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

John

1 Ответ

0 голосов
/ 10 июля 2009

Предположительно (если все предположения, которые я должен был сделать из-за недостаточной ясности вопроса, верны), вы хотите следующее:

<TextBlock  Text="{Binding Path=A1}" Grid.Column="0" />
    <TextBlock  Text="{Binding Path=A2}" Grid.Column="1" />
        <StackPanel Orientation="Horizontal" Name="B" DataContext="{Binding Path=B}" Grid.Column="2">
            <TextBlock  Text="{Binding Path=B1}"  />
            <TextBlock  Text="{Binding Path=B2}"  />
            <TextBlock  Text="{Binding Path=B3}"  />
            <ItemsControl ItemsSource="{Binding Path=C}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Vertical" />
                    </ItemsPanelTemplate>
                 </ItemsControl.ItemsPanel>
                 <ItemsControl.ItemTemplate>
                     <DataTemplate>
                         <StackPanel Orientation="Horizontal" Name="C">
                             <TextBlock  Text="{Binding Path=C1}"  />
                             <TextBlock  Text="{Binding Path=C2}"  />
                             <TextBlock  Text="{Binding Path=C3}"  />
                         </StackPanel>
                     </DataTemplate>
                 </ItemsControl.ItemTemplate>
            </ItemsControl>
    </StackPanel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...