我正在尝试编写一个简单的 WPF 学习项目,它在可调整大小的主窗口中创建一组按钮。集合中的每个条目都有Button
一个,并且该集合的内容在运行时可能会有所不同。我希望按钮填满整个窗口(例如 1 个按钮 @ 100% 宽度、2 个按钮 @ 50% 宽度、3 个按钮 @ 33% 宽度等,所有这些都在 100% 高度)。到目前为止,我所写的简化版本是:
<ItemsControl x:Name="itemscontrolButtons" ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Tag="{Binding}">
<TextBlock Text="{Binding}" />
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
...
List<string> listButtonTexts = new List<string>() { "Button1", "Button2" };
...
itemscontrolButtons.DataContext = listButtonTexts;
这导致:
我一直无法使按钮拉伸以适应宽度,我尝试使用 aGrid
而不是StackPanel
徒劳无功。
然后,作为一项可选的改进,我会很感激有关如何调整它的建议,以便如果有太多按钮以至于它们不能正确地放在一行上或者比阈值窄,它将换行到一个新行上(从而减半如果从 1 行变为 2 行,则为按钮高度)。
我想强调一下,我想知道如何以WPF 方式做到这一点。我意识到我可以使用窗口调整大小消息并显式调整控件的大小,这就是我使用 MFC 或 WinForms 所做的事情,但从我所读到的内容来看,这并不是 WPF 应该如何做的事情。