WPF:堆叠面板中元素之间的间距

WPF:堆叠面板中元素之间的间距

问题描述:

我有一个带有复选框的堆叠面板。 我似乎不能使具有保证金属性的复选框之间的间距相同WPF:堆叠面板中元素之间的间距

有些人可以告诉我我做错了什么?

下面的代码给了我这样的:

http://www.shrani.si/f/1Y/M6/4eniAdAw/margin.png http://www.shrani.si/f/1Y/M6/4eniAdAw/margin.png

正如你所看到的,元件之间的间隔不是恒定的!

<StackPanel MinWidth="150" cal:Bind.Model="{Binding}" Orientation="Horizontal"> 
    <StackPanel.Resources> 
     <Style TargetType="{x:Type CheckBox}"> 
      <Setter Property="Margin" Value="0,0,20,0"/> 
     </Style> 
    </StackPanel.Resources> 
    <CheckBox IsChecked="{Binding IsShown}" Content="{Binding ModuleName, Converter={StaticResource localizeModuleAndFunctionConverter}}" 
       cal:Message.Attach="[Event Click] = [Action FilterShownModuleFunctions]" /> 
</StackPanel> 
+0

你可以在这里附上图像吗? – Amsakanna 2010-07-19 11:44:58

+0

您确定复选框位于StackPanel内吗?你可以检查是否有复选框定义的全局样式? – Ragunathan 2010-07-19 12:17:47

+1

这个StackPanel是“独立的”还是它是某种ItemsControl的面板?你只在你的例子中显示一个复选框,所以很难说出图像与代码的匹配程度。 – 2010-07-19 14:16:03

我猜你的问题是你的MinWidth =“150”属性。我认为你现在总共有5个堆叠面板。你有4个堆叠面板,每个面板都有自己的复选框。然后我假设你已经有了第5个堆栈面板来存放你的4个堆栈面板。

如果是这样的话......那么问题是,每个复选框都在150宽度(最小)的堆叠面板,但你的第三个堆叠面板大于150,因为文本很长,所以它必须是包含整个文本的大小(加上20的边距)。

删除MinWidth =“150”,我认为您将在每个复选框的文本之间获得20的边距。 (如果您希望复选框的实际框之间有均匀间距,则应保持最小宽度,但要使其足够大,至少与包含最长文本的复选框一样宽)。

+0

啊,好猜。我没有这么想 - 我假设了一对多的StackPanel与CheckBoxes的比例,并不是每个CheckBox都是独立的。我想这会引起“为什么?”的问题。但这不是什么在这里被问...... :) – 2010-07-19 14:51:52

+0

thanx很多。我正在改变MinWidth道具,但它没有帮助。删除它确实有帮助,因为我想在文本之间的边距而不是实际的复选框。 在我做另一个问题之前,也许我可以问这里... 我想摆脱按钮的设置宽度。根据整个应用程序中的文本来调整按钮大小的方法是什么? 这就是一个问题......第二个是如果我有三个按钮旁边eachother,我如何设置所有相同的宽度(最大的按钮的宽度)。希望我有道理... – no9 2010-07-20 06:35:01

+0

没关系,我用uniformgrid解决了它! – no9 2010-07-20 08:33:29