2009-07-10 121 views
0

我对如何组织数据的屏幕布局存在问题。WPF布局问题

我与属性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。我创建一个DataTemplate

  <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> 

和使用的DataTemplate显示的数据使用一个列表视图,但永远只显示一个C数据的行。有关如何获得所需布局的任何建议?

约翰

+0

模板的遗憾缺件 John 2009-07-10 00:18:34

+0

请提供完整的代码示例。由于您提供的代码可能是A类型对象的模板,但您没有提及任何A对象列表,因此在此处“使用数据模板使用listview”的含义并不完全清楚。 – 2009-07-10 00:40:31

回答

0

推测(如果我不得不作出由于清晰度的问题不够所有的假设是正确的),你想这样:

<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>