如何自动调整网格中对象的大小?

问题描述 投票:0回答:2

所以我最近开始学习更多C#,并且我目前正在尝试创建GUI。到目前为止,我有一个标题和一个如下所示的文本框:https://i.imgur.com/BvpkQ3U.png

是的,这看起来不错,这不是问题。问题是,当您打开窗口(通过调试它)时,窗口设置为预览时的大小。没关系但是,当我最大化它时,窗口内部的对象不会变大。它们保持相同的大小。看起来像这样:之前:https://i.imgur.com/NuGTDwf.png后:https://i.imgur.com/pVy2aYk.png

如何使窗口内部的对象变大,就像窗口本身一样?

MainWindow.xaml:

<Window x:Name="THE_GUI" x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:GUI"
        mc:Ignorable="d"
        Title="GUI" Height="450" Width="800" Foreground="Black" WindowStyle="SingleBorderWindow">
    <Grid>
        <TextBlock x:Name="GUI_TITLE2" HorizontalAlignment="Center" Margin="0,10,0,0" Text="TITLE" TextWrapping="Wrap" VerticalAlignment="Top" Height="50" Width="125" FontSize="18"/>
        <TextBox HorizontalAlignment="Left" Margin="41,35,0,0" Text="TextBox" TextWrapping="Wrap" VerticalAlignment="Top" Width="204" Height="375" IsReadOnly="True"/>
    </Grid>
</Window>

如果您需要更多代码,我可以提供谢谢! :)聚苯乙烯我确实看到了这个问题:WPF: How can I have controls in a grid automatically resize when the grid is resized?,但对我没有任何帮助。

wpf xaml
2个回答
0
投票

如果要调整控件的大小,请不要设置控件的高度和宽度(TextBlock / TextBox)。另外,您正在使用没有行/列的纯网格,因此WPF将不知道如何缩放GUI。

您需要阅读WPF中可用的不同类型的面板/容器,以及如何使用它们放置控件。

检查:StackPanel,WrapPanel,DockPanel。对于Grid,请阅读有关RowDefinitions和Columndefinitions的信息。阅读通配符的高度和宽度分配。


0
投票

也正如Prateek所建议的那样,仅仅将控件置于网格之下是行不通的。如果要使用网格控件,请创建行和列以对齐控件。我已经更新了您的代码,在这里是:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="13*"/>
        <RowDefinition Height="87*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="50*"/>
        <ColumnDefinition Width="20*"/>
        <ColumnDefinition Width="30*"/>
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Row="0" Grid.Column="1"
        x:Name="GUI_TITLE2" HorizontalAlignment="Stretch" 
               Text="TITLE" TextWrapping="Wrap" VerticalAlignment="Stretch" 
               FontSize="18"/>
    <TextBox  Grid.Row="1" Grid.Column="0"
        HorizontalAlignment="Stretch" Text="TextBox" TextWrapping="Wrap"
             VerticalAlignment="Stretch" IsReadOnly="True"/>
</Grid>
© www.soinside.com 2019 - 2024. All rights reserved.