【发布时间】:2010-11-05 10:17:26
【问题描述】:
我有这个案例
<WrapPanel>
<CheckBox>Really long name</CheckBox>
<CheckBox>Short</CheckBox>
<CheckBox>Longer again</CheckBox>
<CheckBox>Foo</CheckBox>
<Slider MinWidth="200" />
</WrapPanel>
我希望 WrapPanel 中的所有 CheckBox 都具有相同的宽度。
添加以下几乎可以达到预期的效果
<WrapPanel.Resources>
<Style TargetType="CheckBox" BasedOn="{StaticResource {x:Type CheckBox}}">
<Setter Property="MinWidth" Value="75" />
</Style>
</WrapPanel.Resources>
但是,我不想硬编码一个特定的宽度,而是让最大的 CheckBox 设置宽度(如果任何宽度 > 75,上面的方法也会失败)。
Slider 是独立的,应该允许大于 CheckBoxes。
我不想使用网格(带有 IsSharedSizeScope),因为我不想要硬编码的列数。
This article 提出了一个有趣的解决方案,但如果不创建自定义控件或使用 C# 代码来解决该问题会很好。
最好的方法是什么,最好只在 XAML 中?
【问题讨论】:
-
我删除了我的答案,因为我认为你的意思是没有网格,如果我写它的第一种方式更适合你,那么让我知道,我可以取消编辑它。
-
在这种情况下,我对 Grid 的唯一看法是我不想要硬编码的列数,因此您的解决方案效果很好。您最初的解决方案也不错,重复性更高,但也更直接。
标签: wpf xaml layout itemscontrol wrappanel