gpt4 book ai didi

.net - 拉伸(stretch)控件以填充 ItemsControl

转载 作者:行者123 更新时间:2023-12-03 11:32:34 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的 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;

这导致:

alt text

我无法让按钮拉伸(stretch)以适应宽度,我尝试使用 Grid而不是 StackPanel没有结果。

然后,作为一项可选的改进,我会很感激有关如何调整它的建议,以便如果有太多按钮无法正确地放在一条线上或比阈值窄,它将换行到新的线(从而减半如果从 1 行变为 2 行,则为按钮高度)。

我想强调一下,我想知道如何以 WPF 方式做到这一点。我意识到我可以使用窗口调整大小消息并显式调整控件的大小,这就是我使用 MFC 或 WinForms 所做的事情,但从我所读到的内容来看,这并不是 WPF 应该如何做的事情。

最佳答案

用 UniformGrid 替换项目控件的面板,这将调整所有子项的大小,以便一切都完全适合:

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

关于.net - 拉伸(stretch)控件以填充 ItemsControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1270078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com