WPF/MVVM包裹面板方向
本文关键字:方向 包裹 MVVM WPF | 更新日期: 2023-09-27 17:58:11
我想基本上显示一个按钮矩阵,按钮的数量在运行时会变化。我的问题是,我希望他们挨在一起,以填满我给他们的所有空间。我认为WrapPanel是做到这一点的完美方法,但它把按钮放在了一起,我不知道如何解决它。
<Grid>
<WrapPanel Width="250" Height="50" Orientation="Horizontal" Margin="543,442,73,162" >
<ItemsControl ItemsSource="{Binding States}" >
<ItemsControl.ItemTemplate>
<DataTemplate >
<Button Width="50" Height="25" Content="{Binding StateName}" Padding="0" ></Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</WrapPanel>...</Grid>
States是一个包含名称和ID号的项目列表。如果我想添加或删除按钮,我会修改列表。因此,按钮以垂直顺序出现,并且它们超出了WrapPanel的限制,所以如果它不够大,只有一些按钮会出现。它们只使用250的宽度中的50,并且超过了50的高度。在这种情况下,如果我放了5个按钮,它只显示其中的2个。
不要将ItemsControl
包裹在WrapPanel
内部。相反,将其设置为ItemsControl的ItemsPanel
。
<ItemsControl ItemsSource="{Binding States}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Width="50" Height="25" Content="{Binding StateName}"
Padding="0"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>