WPF 窗口扩展到全屏
Posted
技术标签:
【中文标题】WPF 窗口扩展到全屏【英文标题】:WPF window expands to full screen 【发布时间】:2022-01-19 11:15:43 【问题描述】:我有这段代码,我想在上面显示我的布局问题。
<Window x:Class="DataGrid.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStartupLocation="CenterScreen"
ResizeMode="CanResize" SizeToContent="WidthAndHeight"
Title="Example" MinHeight="250" MinWidth="250">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Grid.Row="0" Grid.Column="0" Fill="Beige" Width="400" Height="250" Margin="4" />
<Rectangle Grid.Row="0" Grid.Column="1" Fill="Green" Width="400" Height="250" Margin="4" />
<ScrollViewer Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Rectangle Fill="LightCoral" Width="4000" Height="100" />
</ScrollViewer>
</Grid>
</Window>
矩形表示数据网格或图形等对象。前两个矩形很小,但第三个矩形可能很长,因此位于 scrollviewer 内。问题是这个长矩形会在滚动条出现之前将对话框扩展到全屏。
我想仅根据两个小矩形(网格的第一行)设置对话框的宽度,并将滚动查看器应用于长矩形。但是,我需要保留SizeToContent = "WidthAndHeight"
,因为小矩形可以有不同的大小。
关于如何编辑布局的任何想法?
【问题讨论】:
在视图后面的代码中计算大小并在启动时设置它。之后窗口仍然可以调整大小或为此使用自定义转换器 【参考方案1】:您可以通过将两个小矩形移动到 Grid 中并将 ScrollViewer 的 Width
属性与该 Grid 的 ActualWidth
属性绑定来完成此操作。
<Window x:Class="WpfApp11.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStartupLocation="CenterScreen"
ResizeMode="CanResize" SizeToContent="WidthAndHeight"
Title="Example" MinHeight="250" MinWidth="250">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Grid.Row="0" x:Name="UpperRow">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Grid.Column="0" Fill="Beige" Width="400" Height="250" Margin="4" />
<Rectangle Grid.Column="1" Fill="Green" Width="400" Height="250" Margin="4" />
</Grid>
<ScrollViewer Grid.Row="1" Width="Binding ElementName=UpperRow, Path=ActualWidth"
HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Rectangle Fill="LightCoral" Width="4000" Height="100" />
</ScrollViewer>
</Grid>
</Window>
【讨论】:
以上是关于WPF 窗口扩展到全屏的主要内容,如果未能解决你的问题,请参考以下文章
从其 superView 中删除 UIView 并将其框架扩展到全屏
在 UICollectionView 中选择时将单元格扩展到全屏