WPF:stackpanel中元素之间的间距

时间:2010-07-19 11:42:43

标签: wpf margin stackpanel

我有一个带复选框的stackpanel。 我似乎无法在带有margin属性的复选框之间使用相同的间距

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

下面的代码告诉我:

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>

1 个答案:

答案 0 :(得分:4)

我猜你的问题是你的MinWidth =“150”属性。我想你现在总共有5个堆叠面板。你有4个堆栈面板,每个面板都有自己的复选框。然后我假设你有一个第5个堆叠面板拿着你的4个堆叠面板。

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

删除MinWidth =“150”,我想你会在每个复选框的文本之间获得20的余量。 (如果你想要复选框的实际框之间的均匀间距,那么你应该保持你的最小宽度,但要足够大,以至于它至少与包含最长文本的复选框一样宽。)