如何根据动态网格的内容控制 WPF 应用程序窗口的高度
本文关键字:WPF 应用程序 窗口 高度 内容控制 动态 网格 何根 | 更新日期: 2023-09-27 18:33:42
我创建了一个 WPF 应用程序,用于在网格的第二行中生成磁贴。我试图实现的是将磁贴保留在第二行而不显示垂直滚动条,直到 WPF 应用程序的高度超过用户屏幕的分辨率。
<Window x:Class="ABC.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ABC Installation" MinWidth="620" SizeToContent="WidthAndHeight" AllowsTransparency="True" WindowStyle="None" Loaded="MainWindow_loaded" MinHeight="600" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60" />
<RowDefinition Height="56" />
<RowDefinition Height="Auto" ScrollViewer.IsDeferredScrollingEnabled="True" />
<RowDefinition Height="94"/>
</Grid.RowDefinitions>
</Grid>
<ScrollViewer Name="productsOuterScroll" Grid.Row="2" HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Auto" Grid.RowSpan="1" >
<StackPanel x:Name="FormStackPanel">
</StackPanel>
</ScrollViewer>
此代码呈现所有超过用户屏幕窗口高度的磁贴,而不使用垂直滚动条。
知道怎么做吗?任何帮助将不胜感激。
如果要滚动内容,请从要向其添加内容的行的RowDefinition
中删除Height
,然后将内容放入 ScrollViewer 中。
您的窗口可能根据屏幕的垂直分辨率正确调整大小,但如果它显示在屏幕中心,它将超过高度。您可以使用以下命令将启动位置设置为屏幕顶部:
WindowStartupLocation="Manual" Top="0"
如果窗口高度过高,您可能需要设置窗口的最大高度。
我想出了这个错误。只需要做两件事。
-
从行定义中删除 height 属性,使其应如下所示
<Window x:Class="ABC.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ABC Installation" MinWidth="620" SizeToContent="WidthAndHeight" AllowsTransparency="True" WindowStyle="None" Loaded="MainWindow_loaded" MinHeight="600" > <Grid> <Grid.RowDefinitions> <RowDefinition Height="60" /> <RowDefinition Height="56" /> <RowDefinition ScrollViewer.IsDeferredScrollingEnabled="True" /> <RowDefinition Height="94"/> </Grid.RowDefinitions> <ScrollViewer Name="productsOuterScroll" Grid.Row="2" HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Auto" Grid.RowSpan="1" > <StackPanel x:Name="FormStackPanel"> </StackPanel> </ScrollViewer> </Grid>
-
根据用户在文件中的主屏幕高度动态设置最大高度.cs
double userheightscreen = System.Windows.SystemParameters.PrimaryScreenHeight; this.MaxHeight = userheightscreen - 100;
PS:"-100"只是为了在屏幕的顶部和底部留出一些空间。