2009-04-30 77 views
0

我有一個數據綁定項目的下列XAML控制,以顯示組列表,標籤和按鈕添加一個新的組首先出現:WPF ItemsControl的數據綁定 - 添加額外初始控件

<WrapPanel Orientation="Horizontal"> 
    <Label Content="Groups" /> 
    <Button x:Name="btnGroupAdd" Click="btnGroupAdd_Click" Content="+" /> 
    <ItemsControl ItemsSource="{Binding}" x:Name="_groupList" > 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel Orientation="Horizontal"> 
       </WrapPanel> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Border Padding="3" BorderThickness="1"> 
        <WrapPanel> 
         <CheckBox x:Name="_groupEnabled" Click="GroupEnabled_Click" IsChecked="{Binding Path=Checked}"> 
          <TextBlock x:Name="_groupName" Text="{Binding Path=Group.Name}" ></TextBlock> 
         </CheckBox> 
         <Button x:Name="_deleteGroup" FontStyle="Normal" Click="DeleteGroup_Click" /> 
        </WrapPanel> 
       </Border> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

對於少數組,所有內容都顯示在一行上。

組+組別1組2組3

當我添加更多的組,包含該項目的包裹面板包裹,但初始標籤和按鈕添加一個新的組是其自己的行,與數據綁定組從下一行開始。

組+
組別1組2組3組4
組5

我可以理解爲什麼會這樣,因爲裹面板嵌套。我的問題是:如何將第一個標籤和按鈕包含在內部包裝面板中,以便它們不在自己的行上?

組+組別1組2組3
組4組5

回答

1

如果你滿意這個:

組+組別1組2組3
                               組4組5

然後我建議使用外部Grid和內WrapPanel。否則,你的選擇是:

  1. 包含其他控件(LabelButton)或視圖模型reprenting這些控件要綁定到收藏。
  2. 寫下你自己的Panel
+0

謝謝肯特,它確實有幫助。我會看看網格,因爲它看起來最簡單。我不認爲我可以將控件添加到集合中,因爲它正在從XML文件反序列化。 我想接下來的問題是如何編寫我自己的面板... – harriyott 2009-04-30 14:34:33