2009-07-10 218 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>