使用 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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-13 09:49:26  来源:igfitidea点击:

how to nest controls in a groupbox when using WPF

c#wpfxamlgroupbox

提问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>