我有一个数据绑定项控件的以下XAML来显示一个组列表,带有一个标签和按钮,用于添加首先出现的新组:

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

对于少数组,一切都出现在一行上。

  

Groups + Group1 Group2 Group3

当我添加更多组时,包含项目的包装面板会换行,但添加新组的初始标签和按钮位于其自己的行上,数据绑定组从下一行开始。

  

群组+
  Group1 Group2 Group3 Group4
  组5

我可以理解为什么会发生这种情况,因为包装面板是嵌套的。我的问题是:如何在内部包装面板中包含第一个标签和按钮,以使它们不在自己的行上?

  

Groups + Group1 Group2 Group3
  Group4 Group5

有帮助吗?

解决方案

如果您对此感到满意:

  

Groups + Group1 Group2 Group3
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Group4 Group5

然后我建议使用外部 Grid 和内部 WrapPanel 。否则,您的选择是:

  1. 包括其他控件( Label Button )或在您绑定的集合中表示这些控件的视图模型。
  2. 编写您自己的 Panel
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top