Wpf 列表框项中的多个控件

Wpf 列表框项中的多个控件,wpf,mvvm,wpf-controls,Wpf,Mvvm,Wpf Controls,我需要能够有尽可能多的控件,以适应“列表框的一行”。目标是不要在表单上浪费空间。列表框的高度为表单的70%(30%为功能区),宽度为100% 我使用自定义ItemTempleSelector,因此列表中的控件可以是以下控件的组合: 标签+文本框、标签+组合框、标签+日期时间选择器 当然,它们一个接一个地出现,但我需要它们从左到右出现。 非常感谢。也许我不理解这个问题,但是为什么不将所有控件放在Wrappanel中,这是数据模板中的根控件。也许我不理解这个问题,但是为什么不将所有控件放在Wrapp

我需要能够有尽可能多的控件,以适应“列表框的一行”。目标是不要在表单上浪费空间。列表框的高度为表单的70%(30%为功能区),宽度为100%

我使用自定义ItemTempleSelector,因此列表中的控件可以是以下控件的组合:

标签+文本框、标签+组合框、标签+日期时间选择器

当然,它们一个接一个地出现,但我需要它们从左到右出现。
非常感谢。

也许我不理解这个问题,但是为什么不将所有控件放在Wrappanel中,这是数据模板中的根控件。

也许我不理解这个问题,但是为什么不将所有控件放在Wrappanel中,这是datatemplate中的根控件。

您需要做的是修改
列表框的
ItemsPanel
以包含
WrapPanel
。这样,您的项目将从左到右显示,然后换行到下一行(我想这就是您想要的)。您还需要禁用列表框上的水平滚动条

    <ListBox ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        ...your other stuff like the ItemTemplate
    </ListBox>

…你的其他东西,比如ItemTemplate
要考虑的另一件事是,您是否使用
列表框
,因为您希望他们能够选择每个项目?
如果没有,则
ItemsControl
将是一个重量较轻且不支持选择项目的一对一替换。

您需要做的是修改
列表框的
ItemsPanel
以包含
包装。这样,您的项目将从左到右显示,然后换行到下一行(我想这就是您想要的)。您还需要禁用列表框上的水平滚动条

    <ListBox ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        ...your other stuff like the ItemTemplate
    </ListBox>

…你的其他东西,比如ItemTemplate
要考虑的另一件事是,您是否使用
列表框
,因为您希望他们能够选择每个项目?
如果没有,则
ItemsControl
将是一对一的替换,重量较轻,不支持选择项目。

这不是最容易解释的情况。该列表将有一个itemsource,它将是我的自定义对象的列表。此对象具有一个枚举,它将确定列表框中的控件是否应为原始声明的控件之一。绑定到列表框的实际列表在功能区中的复选按钮上有所不同,因此可能会经常更改。这不是最容易解释的情况。该列表将有一个itemsource,它将是我的自定义对象的列表。此对象具有一个枚举,它将确定列表框中的控件是否应为原始声明的控件之一。绑定到列表框的实际列表在功能区中的复选按钮上有所不同,因此它可以经常更改。