如何在水平堆栈面板中以垂直模式对齐控件WPF

时间:2015-06-03 11:52:30

标签: c# wpf xaml

我使用堆栈面板在水平模式下对齐两个单选按钮,但我希​​望在垂直模式下在同一堆栈面板中添加数据网格。

<GroupBox Grid.Column="2" Header="Approfondimento pronostici" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" >
                    <StackPanel Orientation="Horizontal">
                        <RadioButton Content="Primo tempo" Margin="3,5,0,128" />
                        <RadioButton Content="Parziale/Finale" Margin="8,5,8,128" />
                        <DataGrid ColumnWidth="*" Grid.Row="2" Grid.Column="2" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Auto" AutoGenerateColumns="False"  Width="auto">
                            <DataGrid.Columns>
                                <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Squadra" MinWidth="100"/>
                                <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="1" MinWidth="40" CanUserResize="False" />
                                <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="X" MinWidth="40" CanUserResize="False" />
                                <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="2" MinWidth="40" CanUserResize="False" />
                                <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="un 1.5" MinWidth="40" CanUserResize="False" />
                                <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="ov 1.5" MinWidth="40" CanUserResize="False" />
                            </DataGrid.Columns>
                        </DataGrid>
                    </StackPanel>

我设置了控制范围,让你知道它应该是什么......单选按钮和数据网格位于一个组框中。我该如何解决?

3 个答案:

答案 0 :(得分:0)

为什么不使用两个堆叠面板?

 <GroupBox Grid.Column="2" Header="Approfondimento pronostici" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" >
    <StackPanel Orientation="Vertical">
                        <StackPanel Orientation="Horizontal">
                            <RadioButton Content="Primo tempo" Margin="3,5,0,128" />
                            <RadioButton Content="Parziale/Finale" Margin="8,5,8,128" />
    </StackPanel>
                            <DataGrid ColumnWidth="*" Grid.Row="2" Grid.Column="2" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Auto" AutoGenerateColumns="False"  Width="auto">
                                <DataGrid.Columns>
                                    <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Squadra" MinWidth="100"/>
                                    <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="1" MinWidth="40" CanUserResize="False" />
                                    <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="X" MinWidth="40" CanUserResize="False" />
                                    <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="2" MinWidth="40" CanUserResize="False" />
                                    <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="un 1.5" MinWidth="40" CanUserResize="False" />
                                    <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="ov 1.5" MinWidth="40" CanUserResize="False" />
                                </DataGrid.Columns>
                            </DataGrid>
                        </StackPanel>
</GroupBox>

答案 1 :(得分:0)

GroupBox只能包含一个子元素作为其内容。因此,您需要重新排列布局以考虑到这一点。我建议Grid

<GroupBox>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition/>
            </Grid.RowDefinitions>

            <StackPanel/>

            <DataGrid Grid.Row="1"/>
        </Grid>
    </GroupBox>

您可以轻松使用DockPanel

答案 2 :(得分:0)

<DockPanel LastChildFill="True">
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" DockPanel.Dock="Top" Background="SkyBlue">
        <RadioButton Content="First Radio Button" HorizontalAlignment="Center" Margin="5,2"/>
        <RadioButton Content="Second Radio Button" HorizontalAlignment="Center" Margin="5, 2"/>
    </StackPanel>
    <DataGrid DockPanel.Dock="Bottom" Background="SlateGray" >

    </DataGrid>
</DockPanel>

这可以是一个解决方案。

enter image description here

根据颜色,您也有样本图片。