WPF:重叠的网格控件

时间:2018-09-11 09:20:56

标签: wpf xaml layout grid

我试图在WPF中构建它(这是在winform中完成的): enter image description here

但是结果看起来像这样: enter image description here

这是我的代码:

<DockPanel>
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="_File">
                <MenuItem Header="_Exit" />
            </MenuItem>
            <MenuItem Header="_Test" />
        </Menu>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <Grid Grid.Row="0" Grid.Column="0">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <GroupBox Grid.Row="0" Grid.Column="0" Header="Interfaces" HorizontalAlignment="Left" Margin="10,10,-155,0"
                  VerticalAlignment="Top" Height="236" Width="419">
                </GroupBox>

                <GroupBox Grid.Row="1" Grid.Column="0" Header="Messages" HorizontalAlignment="Left" Margin="10,10,-155,0"
                  VerticalAlignment="Top" Height="236" Width="419">
                </GroupBox>

                <GroupBox Grid.Row="2" Grid.Column="0" Header="Responses" HorizontalAlignment="Left" Margin="10,10,-155,0"
                  VerticalAlignment="Top" Height="236" Width="419">
                </GroupBox>
            </Grid>

            <Grid Grid.Row="0" Grid.Column="1">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <RichTextBox Name="txtLog" Grid.Row="0" Grid.Column="0">
                    <FlowDocument>
                        <Paragraph FontSize="12">Hello, world!</Paragraph>
                    </FlowDocument>
                </RichTextBox>
            </Grid>
        </Grid>
    </DockPanel>

我无法理解为什么文本框与列0的“组”框重叠。我希望它填充右侧的网格。

所以我想让我添加更多文本:我可能想在中间添加一个GridSplitter,以便于获得帮助。

2 个答案:

答案 0 :(得分:1)

@ASh是正确的。负值-155有点令人困惑,它使左侧面板上的GroupBoxes占据的位置比包含Grid的位置更宽。

所以不是RichTextBoxGropuBoxes重叠; RichTextBox是应该的位置,它是三个GroupBoxes向右延伸155像素的地方。

对于RichTextBox,由于将其放入Grid设置为Width的{​​{1}}中,因此Auto不会水平延伸占用所有可用空间。

删除这些行将解决此问题。

RictTextBox

答案 1 :(得分:1)

这里是简化PaidOutReason paid = new PaidOutReason(trnprt, apiParameters); paid.btnSave.Click += (ss, ee) => { PopUpBanks popu = new PopUpBanks(this); popu.Show(); }; paid.Show(); 的方式,使其可以适应任何屏幕尺寸。我删除了很多不需要的东西。

DockPanel

并输出

enter image description here