所以我最近开始学习更多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?,但对我没有任何帮助。
如果要调整控件的大小,请不要设置控件的高度和宽度(TextBlock / TextBox)。另外,您正在使用没有行/列的纯网格,因此WPF将不知道如何缩放GUI。
您需要阅读WPF中可用的不同类型的面板/容器,以及如何使用它们放置控件。
检查:StackPanel,WrapPanel,DockPanel。对于Grid,请阅读有关RowDefinitions和Columndefinitions的信息。阅读通配符的高度和宽度分配。
也正如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>