使用 WPF 时如何在分组框中嵌套控件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19280867/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to nest controls in a groupbox when using WPF
提问by software is fun
I want to layout 2 labels on top of each other and then two buttons horizontally next to each other but below the labels (below is an example of what I would like it to look like)
我想将 2 个标签放在彼此的顶部,然后将两个按钮水平排列,但在标签下方(下面是我希望它看起来像的示例)
(All items are centered)
(所有项目都居中)
Welcome
Please Select A Language
English Spanish
Here is my XAML
这是我的 XAML
<Window x:Class="Probation_Sign_In.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="768" Width="1024" Closing="Window_Closing" ResizeMode="NoResize" Topmost="True" WindowStartupLocation="CenterScreen" WindowState="Maximized">
<Grid>
<GroupBox Header="GroupBox" HorizontalAlignment="Left" Height="492" Margin="10,10,0,0" VerticalAlignment="Top" Width="505">
<StackPanel>
<Label x:Name="labelWelcome" Content="Welcome." HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="48" FontWeight="Bold" Margin="136,55,0,0"/>
<Label x:Name="labelWelcomeMessage" Content="Please select a language." HorizontalAlignment="Left" Margin="50,193,0,0" VerticalAlignment="Top" FontSize="36"/>
<Button x:Name="englishButton" Content="English" HorizontalAlignment="Center" Margin="109,410,767,297" VerticalAlignment="Center" Width="142" FontSize="20" TouchUp="englishButton_TouchUp" Click="englishButton_Click">
<Button.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="0"/>
<GradientStop Color="#FFEBEBEB" Offset="0.5"/>
<GradientStop Color="#FFDDDDDD" Offset="0.5"/>
<GradientStop Color="#FF71B5BB" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
<Button Content="Espa?ol" HorizontalAlignment="Center" Margin="269,410,607,300" VerticalAlignment="Center" Width="142" FontSize="20" Height="30">
<Button.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="0"/>
<GradientStop Color="#FFEBEBEB" Offset="0.5"/>
<GradientStop Color="#FFDDDDDD" Offset="0.5"/>
<GradientStop Color="#FF71B5BB" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
</StackPanel>
</GroupBox>
</Grid>
</Window>
The above XAML doesn't give me the desired result. But all controls must be inside the GroupBox
上面的 XAML 没有给我想要的结果。但所有控件都必须在 GroupBox 内
回答by
Wrap your Buttoncontrols in another StackPaneland set its Orientationproperty to Horizontal:
将您的Button控件包装在另一个中StackPanel并将其Orientation属性设置为Horizontal:
<Grid>
<GroupBox Header="GroupBox" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="505">
<StackPanel>
<Label x:Name="labelWelcome" Content="Welcome." HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="48" FontWeight="Bold" Margin="136,10,0,0"/>
<Label x:Name="labelWelcomeMessage" Content="Please select a language." HorizontalAlignment="Left" Margin="50,0,0,0" VerticalAlignment="Top" FontSize="36"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button x:Name="englishButton" Content="English" Width="142" FontSize="20" Margin="5" TouchUp="englishButton_TouchUp" Click="englishButton_Click">
<Button.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="0"/>
<GradientStop Color="#FFEBEBEB" Offset="0.5"/>
<GradientStop Color="#FFDDDDDD" Offset="0.5"/>
<GradientStop Color="#FF71B5BB" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
<Button Content="Espa?ol" Width="142" FontSize="20" Height="30" Margin="5">
<Button.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="0"/>
<GradientStop Color="#FFEBEBEB" Offset="0.5"/>
<GradientStop Color="#FFDDDDDD" Offset="0.5"/>
<GradientStop Color="#FF71B5BB" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
</StackPanel>
</StackPanel>
</GroupBox>
</Grid>
EDIT:Altered margin values so that controls stack closer. Play with the Marginproperty to get your spacing how you want it.
编辑:改变了边距值,以便控制堆栈更近。使用该Margin属性来获得您想要的间距。
回答by BRAHIM Kamel
try this
尝试这个
</Grid.ColumnDefinitions>
<Button x:Name="englishButton" Content="English" HorizontalAlignment="Center" VerticalAlignment="Center" Width="142" FontSize="20" Click="englishButton_Click">
<Button.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="0"/>
<GradientStop Color="#FFEBEBEB" Offset="0.5"/>
<GradientStop Color="#FFDDDDDD" Offset="0.5"/>
<GradientStop Color="#FF71B5BB" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
<Button Grid.Column="1" Content="Espa?ol" HorizontalAlignment="Center" VerticalAlignment="Center" Width="142" FontSize="20" Height="30">
<Button.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="0"/>
<GradientStop Color="#FFEBEBEB" Offset="0.5"/>
<GradientStop Color="#FFDDDDDD" Offset="0.5"/>
<GradientStop Color="#FF71B5BB" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
</Grid>
</StackPanel>
</GroupBox>
</Grid>

