我的网格布局格式有什么问题?
What is wrong with my grid layout formatting?
我的申请中有以下 window:
<Grid Width="{Binding ActualWidth,
RelativeSource = {RelativeSource AncestorType = {x:Type Window}}}"
Height="{Binding ActualHeight,
RelativeSource ={RelativeSource AncestorType = {x:Type Window}}}">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<DataGrid Grid.Column="0" x:Name="dataGrid" VerticalAlignment="Stretch" CanUserAddRows="False" IsReadOnly="True"/>
<DataGrid Grid.Column="2" x:Name="dataGrid2" VerticalAlignment="Stretch" CanUserAddRows="False" IsReadOnly="True"/>
<GridSplitter Grid.Column="1" x:Name="gridSplitter" HorizontalAlignment="Center" VerticalAlignment="Stretch" Width="5"/>
</Grid>
<StatusBar Grid.Row="1" Height="20">
<StatusBarItem x:Name="StatusBarInfo" Content="Offset:" HorizontalAlignment="Right" />
</StatusBar>
</Grid>
在设计器视图中,一切都按预期显示,有两个 dataGrid,由 gridSplitter 分隔,状态栏位于屏幕底部。由于某些原因,当运行应用程序时,布局略有不同,包含dataGrid的网格与状态栏重叠。
这让我想起我在 Windows 上的显示设置 10 给我带来了问题。
这是我的第一个WPF应用程序,我还在学习中。
如果 dataGrid 中有任何数据,它可能会拉伸并重叠状态栏。如果这是问题所在,请尝试使用:
<ScrollViewer> (data grid here) </ScrollViewer>
也许设置根 Grid
的 Width
和 Height
会阻止您实现目标。我相信默认情况下,如果不设置行高和列宽,网格将占据 Window 的 space 的其余部分 (*)。或者,您可以将其 VerticalAlignment
和 HorizontalAlignment
设置为 "Stretch"
,而不是设置第一个 Grid 的宽度和高度
我的申请中有以下 window:
<Grid Width="{Binding ActualWidth,
RelativeSource = {RelativeSource AncestorType = {x:Type Window}}}"
Height="{Binding ActualHeight,
RelativeSource ={RelativeSource AncestorType = {x:Type Window}}}">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<DataGrid Grid.Column="0" x:Name="dataGrid" VerticalAlignment="Stretch" CanUserAddRows="False" IsReadOnly="True"/>
<DataGrid Grid.Column="2" x:Name="dataGrid2" VerticalAlignment="Stretch" CanUserAddRows="False" IsReadOnly="True"/>
<GridSplitter Grid.Column="1" x:Name="gridSplitter" HorizontalAlignment="Center" VerticalAlignment="Stretch" Width="5"/>
</Grid>
<StatusBar Grid.Row="1" Height="20">
<StatusBarItem x:Name="StatusBarInfo" Content="Offset:" HorizontalAlignment="Right" />
</StatusBar>
</Grid>
在设计器视图中,一切都按预期显示,有两个 dataGrid,由 gridSplitter 分隔,状态栏位于屏幕底部。由于某些原因,当运行应用程序时,布局略有不同,包含dataGrid的网格与状态栏重叠。
这让我想起我在 Windows 上的显示设置 10 给我带来了问题。
这是我的第一个WPF应用程序,我还在学习中。
如果 dataGrid 中有任何数据,它可能会拉伸并重叠状态栏。如果这是问题所在,请尝试使用:
<ScrollViewer> (data grid here) </ScrollViewer>
也许设置根 Grid
的 Width
和 Height
会阻止您实现目标。我相信默认情况下,如果不设置行高和列宽,网格将占据 Window 的 space 的其余部分 (*)。或者,您可以将其 VerticalAlignment
和 HorizontalAlignment
设置为 "Stretch"