2009-04-30 79 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