如何在 WPF 中以均匀间距水平排列控件
How to arrange controls horizontally with even spacing in WPF
我正在寻找一种灵活的方式来在网格内以均匀的间距排列矩形控件。控件是 added/removed 动态的。最后我希望让用户 select 以下布局之一:
我正在考虑使用 UniformGrid,其余的由网格的属性处理:
<UniformGrid>
<Button Content="Button 1"/>
<Button Content="Button 2"/>
<Button Content="Button 3"/>
<Button Content="Button 4"/>
<Button Content="Button 5"/>
</UniformGrid>
但是,我担心的是我未来能否像选项 3 中那样自定义布局(见上图)。考虑到我在设计中遵循 MVVM,我正在寻找如何使其尽可能灵活的建议。
使用 UniformGrid 并绑定列数和行数。将其用作项目控件的面板,您可以获得 MVVM 分离。
<ItemsControl ItemsSource={Binding X}>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows={Binding...} />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
A WrapPanel
可用于显示任意数量的项目,如果项目超过允许的宽度,将自动换行。
<WrapPanel>
<Button Content="Button 1"/>
<Button Content="Button 2"/>
<Button Content="Button 3"/>
<Button Content="Button 4"/>
<Button Content="Button 5"/>
</WrapPanel>
或者,如果您正在寻找更结构化的东西,您可以在其中为控件定义动态布局,我建议 ItemsControl
并将 ItemsPanelTemplate
设置为 UniformGrid
、WrapPanel
或 Grid
,具体取决于您的要求。 提供了一个很好的例子。
我正在寻找一种灵活的方式来在网格内以均匀的间距排列矩形控件。控件是 added/removed 动态的。最后我希望让用户 select 以下布局之一:
我正在考虑使用 UniformGrid,其余的由网格的属性处理:
<UniformGrid>
<Button Content="Button 1"/>
<Button Content="Button 2"/>
<Button Content="Button 3"/>
<Button Content="Button 4"/>
<Button Content="Button 5"/>
</UniformGrid>
但是,我担心的是我未来能否像选项 3 中那样自定义布局(见上图)。考虑到我在设计中遵循 MVVM,我正在寻找如何使其尽可能灵活的建议。
使用 UniformGrid 并绑定列数和行数。将其用作项目控件的面板,您可以获得 MVVM 分离。
<ItemsControl ItemsSource={Binding X}>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows={Binding...} />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
A WrapPanel
可用于显示任意数量的项目,如果项目超过允许的宽度,将自动换行。
<WrapPanel>
<Button Content="Button 1"/>
<Button Content="Button 2"/>
<Button Content="Button 3"/>
<Button Content="Button 4"/>
<Button Content="Button 5"/>
</WrapPanel>
或者,如果您正在寻找更结构化的东西,您可以在其中为控件定义动态布局,我建议 ItemsControl
并将 ItemsPanelTemplate
设置为 UniformGrid
、WrapPanel
或 Grid
,具体取决于您的要求。