给定一个StackPanel:
<StackPanel>
<TextBox Height="30">Apple</TextBox>
<TextBox Height="80">Banana</TextBox>
<TextBox Height="120">Cherry</TextBox>
</StackPanel>
即使子元素本身具有不同的大小,怎样才能使子元素之间有相同大小的间距?是否可以在不为每个单独的子项设置属性的情况下完成此操作?
发布于 2009-05-31 18:39:47
使用边距或填充,应用于容器内的作用域:
<StackPanel>
<StackPanel.Resources>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Margin" Value="0,10,0,0"/>
</Style>
</StackPanel.Resources>
<TextBox Text="Apple"/>
<TextBox Text="Banana"/>
<TextBox Text="Cherry"/>
</StackPanel>
编辑:如果您想要重用两个容器之间的边距,您可以将边距值转换为外部作用域f.e.中的资源。
<Window.Resources>
<Thickness x:Key="tbMargin">0,10,0,0</Thickness>
</Window.Resources>
,然后在内部作用域中引用此值。
<StackPanel.Resources>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Margin" Value="{StaticResource tbMargin}"/>
</Style>
</StackPanel.Resources>
发布于 2011-05-30 06:29:12
另一个很好的方法可以在这里看到:http://blogs.microsoft.co.il/blogs/eladkatz/archive/2011/05/29/what-is-the-easiest-way-to-set-spacing-between-items-in-stackpanel.aspx链接是这个链接的坏掉的-> this is webarchive。
它展示了如何创建附加的行为,以便像这样的语法可以工作:
<StackPanel local:MarginSetter.Margin="5">
<TextBox Text="hello" />
<Button Content="hello" />
<Button Content="hello" />
</StackPanel>
这是为面板的多个子项设置边距的最简单、最快速的方法,即使它们不属于同一类型。(即按钮、TextBoxes、ComboBoxes等)
发布于 2015-06-16 18:18:32
你真正想做的事情是包装所有子元素。在这种情况下,你应该使用一个items控件,而不是求助于可怕的附加属性,因为你想要样式化的每个属性都会有一百万个这样的属性。
<ItemsControl>
<!-- target the wrapper parent of the child with a style -->
<ItemsControl.ItemContainerStyle>
<Style TargetType="Control">
<Setter Property="Margin" Value="0 0 5 0"></Setter>
</Style>
</ItemsControl.ItemContainerStyle>
<!-- use a stack panel as the main container -->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<!-- put in your children -->
<ItemsControl.Items>
<Label>Auto Zoom Reset?</Label>
<CheckBox x:Name="AutoResetZoom"/>
<Button x:Name="ProceedButton" Click="ProceedButton_OnClick">Next</Button>
<ComboBox SelectedItem="{Binding LogLevel }" ItemsSource="{Binding LogLevels}" />
</ItemsControl.Items>
</ItemsControl>
https://stackoverflow.com/questions/932510
复制相似问题