我正在尝试编写一个简单的WPF学习项目,它在可调整大小的主窗口内创建一组按钮。每个集合中的条目将有一个Button
,并且该集合的内容在运行时可能会有所不同。我希望按钮填满整个窗口(例如,100%宽度的1个按钮,宽度50%的2个按钮,宽度33%的3个按钮等)。什么我至今写一个简化版本是:拉伸控件填充ItemsControl
<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;
这导致了这个:
我已经无法使按钮被拉伸以适应宽度和我的尝试使用Grid
而不是StackPanel
是徒劳的。
然后,作为一个可选的改进,我将不胜感激关于如何调整它的建议,以便如果有太多的按钮,他们无法适合一条线或窄于阈值,它会包装到一个新的线(如果从1行到2行,则将按钮高度减半)。
我想强调一下,我想知道如何做到这一点WPF方式。我意识到我可以使用窗口大小调整消息并显式调整控件的大小,这就是我如何使用MFC或WinForms完成的,但从我读过的内容来看,并不是WPF应该如何完成这些操作。
这正是我需要的主要目标,谢谢。 – Gregyski 2009-08-13 15:07:23
感谢Nir的回答,我能够完成可选标准。详情在我发布到这个问题的答案中。在Meta上推荐我这样处理这种情况。 http://meta.stackexchange.com/questions/14306/my-improved-answer-based-on-anothers-accepted-answer-for-my-own-question – Gregyski 2009-08-17 23:53:43
谢谢!这正是我所缺少的将项目及其面板均匀分布在列表框中的缺失。 – 2013-03-15 01:47:50