Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF:具有统一宽度的项目的水平对齐集合_Wpf_Itemtemplate - Fatal编程技术网

WPF:具有统一宽度的项目的水平对齐集合

WPF:具有统一宽度的项目的水平对齐集合,wpf,itemtemplate,Wpf,Itemtemplate,我从视图模型中绑定了数量可变的项目,这些项目需要水平显示并可选择。 每个项目都由一个文本表示,这些文本的长度各不相同。当我使用具有水平方向的StackPanel的列表视图作为其ItemTemplate时,项目的宽度仅与内部文本的宽度相同。 有没有办法让它们的尺寸都一样,也就是说最大的尺寸?理想情况下,没有一些复杂的代码隐藏,使用项目模板等? 注意:我不能设置一些任意的最小宽度,因为我不知道文本最终可以有多少长度(不同的语言等)您可以使用列表框,它支持选择UniformGrid作为ItemsPan

我从视图模型中绑定了数量可变的项目,这些项目需要水平显示并可选择。 每个项目都由一个文本表示,这些文本的长度各不相同。当我使用具有水平方向的StackPanel的列表视图作为其ItemTemplate时,项目的宽度仅与内部文本的宽度相同。 有没有办法让它们的尺寸都一样,也就是说最大的尺寸?理想情况下,没有一些复杂的代码隐藏,使用项目模板等?
注意:我不能设置一些任意的最小宽度,因为我不知道文本最终可以有多少长度(不同的语言等)

您可以使用
列表框
,它支持选择
UniformGrid
作为ItemsPanel。UniformGrid将为每个元素分配相等的空间

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="1"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>

    <ListBox.ItemTemplate>
        <DataTemplate>
            <Label Content="{Binding}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

范例


您能为每一项做类似于“Width=”1*“”的操作吗?不知道您的意思是什么。TexBlock上的宽度不支持以下内容"1*'. 如果你的意思是有一个列定义的网格,我只是尝试了一下。什么都不做。但是,即使我以某种方式实现了这一点,我认为这会将我的项目拉伸到最大可用宽度,这根本不是我想要的。在这一过程中,我在项目之间添加边框以及更改所选项目的默认背景色方面遇到了困难。你能帮我吗?@Shaggydog,检查颜色设置示例。分隔符:我将首先向标签添加侧边框(
Label BorderThickness=“1,0”BorderBrush=“Red”
)或标签周围的边框元素。如果不好看,我会尝试使用自定义ListBoxItem模板。我目前没有IDE,因此如果您需要关于您的问题的更详细帮助,我建议您提出一个新问题。