我正在开发一个 C# WPF 项目,并且正在使用用户控件,但是当调整父窗口大小时,我遇到了调整大小工作的问题。
我有一个名为 MainWindow 的窗口,其中包含一个用于托管用户控件的 Canvas 。当主窗口调整大小时,用户控件也应该调整大小。这更像是一个不太有效的方法,只是它似乎没有填满谁的屏幕。下面是代码和屏幕截图来解释我的意思。
主窗口
下面是主窗口的代码,该窗口将托管用户控件
<Window x:Class="ReportReader.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="513" Width="925" WindowStartupLocation="CenterScreen">
<Grid>
<Menu Height="23" Name="menu1" VerticalAlignment="Top">
<MenuItem Name="mnuFile" Header="File">
<MenuItem Name="mnuOpen" Click="mnuOpen_Click" Header="Open" />
<MenuItem Name="mnuClose" Click="mnuClose_Click" Header="Close Report" />
<MenuItem Name="mnuRecentFile" Header="Recent Files" />
<Separator />
<MenuItem Name="mnuExit" Click="mnuExit_Click" Header="Exit" InputGestureText="Alt+F4" />
</MenuItem>
</Menu>
<StatusBar Name="statusBar1" Height="28" VerticalAlignment="Bottom" />
<Label Content="No Report Loaded" Name="lblStatus" Height="28" VerticalAlignment="Bottom" Margin="0,0,39,0" />
<Grid Margin="12,29,12,34" Name="MainWindowHostCanvas" Background="Blue" />
</Grid>
</Window>
Canvas 是蓝色的,因此它在屏幕截图中显示了我的问题。
下面是其中一个用户控件的代码
<UserControl x:Class="ReportReader.UserControls.ReportViewer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignWidth="879">
<Grid Height="415">
<Label Content="Report for..." Margin="12,12,12,0" Name="lblReportDateTitle" FontSize="26" FontWeight="Bold" HorizontalContentAlignment="Center" Height="44" VerticalAlignment="Top" />
<ComboBox Height="23" HorizontalAlignment="Left" Margin="12,62,0,0" Name="cboRegisteredApps" VerticalAlignment="Top" Width="202" SelectionChanged="cboRegisteredApps_SelectionChanged">
<ComboBoxItem Content="Select App" IsSelected="True" />
</ComboBox>
<DataGrid AutoGenerateColumns="False" Margin="14,203,12,12" Name="dataExceptionGroups" />
</Grid>
</UserControl>
下面是程序首次加载时主窗口托管的用户控件的屏幕截图。
正如您所看到的,蓝色 Canvas 填充了整个窗口,直到状态栏,数据网格位于窗口底部,状态栏上方,报表标题位于窗口顶部菜单上方酒吧。
下面是窗口大小已调整后的屏幕截图
正如您从该屏幕截图中看到的,窗口已调整大小,蓝色 Canvas 已调整大小以填充额外的空间,但是,数据网格不再位于窗口底部,位于状态栏上方,而是 float 在状态栏周围中间。而且顶部的标题不再位于菜单栏的正下方,而是位于中间。
我不知道我能做些什么来解决这个问题。
感谢您提供的任何帮助。
最佳答案
UserControl
中的 Grid
已将 Height
固定设置为 415,这就是它不拉伸(stretch)的原因:
<UserControl>
<Grid Height="415">
如果您使用设计器来创建界面,那么它倾向于将这些属性设置为固定值。
关于c# - 调整父窗口大小时自动调整用户控件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20032574/