【问题标题】:WPF ItemsControl data binding - adding extra initial controlsWPF ItemsControl 数据绑定 - 添加额外的初始控件
【发布时间】:2009-04-30 13:40:52
【问题描述】:

我有以下 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>

对于少数组,所有内容都显示在一行上。

组 + 组 1 组 2 组 3

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

组 +
组 1 组 2 组 3 组 4
第 5 组

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

组 + 组 1 组 2 组 3
Group4 Group5

【问题讨论】:

    标签: wpf data-binding itemscontrol wrappanel


    【解决方案1】:

    如果您对此感到满意:

    组 + 组 1 组 2 组 3
    Group4 Group5

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

    1. 包括其他控件(LabelButton)或在您绑定到的集合中表示这些控件的视图模型。
    2. 写你自己的Panel

    【讨论】:

    • 谢谢肯特,它确实有帮助。我会看看网格,因为它看起来最简单。我不认为我可以将控件添加到集合中,因为它是从 XML 文件反序列化的。我想下一个问题是如何编写自己的面板...
    猜你喜欢
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多