我正在开发一个需要独立于分辨率的数据库系统,有些使用仍然以1024 x 768运行的屏幕,有些使用1920 x 1080的屏幕,而其他人则使用其间的所有内容。
我之前没有做过很多与WPF的合作,所以我只是刚刚开始并尝试绕过高度,宽度和路线。
我目前拥有的是一个主窗口,其中包含一个网格,其中顶部有一行标签和一些导航按钮,以及登录人员的时间和用户名。然后我在第二行下方有一个框架,我将页面加载到程序的主导航中。
在页面中我主要使用网格布局,偶尔使用堆栈面板。我遇到的最大问题之一就是像这样的问题;
在低分辨率下这很常见,因为在更高分辨率下按钮看起来很好;
这是其父网格中按钮的XAML代码;
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button Content="HR" Margin="10" Click="RunHrSystem" FontSize="18.667" />
<Button Content="Companies" Margin="10" Click="RunCompSystem" FontSize="18.667" Grid.Row="1" />
<Button Content="People" Margin="10" Click="RunPeopleSystem" FontSize="18.667" Grid.Row="2" />
<Button Content="IT Management" Margin="10" Click="RunITManagementSystem" FontSize="18.667" Grid.Row="3"/>
<Button Content="Sales" Margin="10" FontSize="18.667" Grid.Row="4" />
<Button Content="Buying" Margin="10" FontSize="18.667" Grid.Row="5" />
<Button Content="Estimating" Margin="10" FontSize="18.667" Grid.Row="6"/>
<Button Content="Design" Margin="10" FontSize="18.667" Grid.Row="7"/>
</Grid>
有什么明显的我在这里做错了阻止按钮按照较低的分辨率调整大小?正如我所说,我在整个程序中使用按钮,以及矩形形状和某些情况下的标签,标签的底部也会被切断。
答案 0 :(得分:5)
目前,您宣布RowDefinitions
使用*
,这会告诉该行使用高度作为可用空间的百分比。因此,如果您的分辨率发生变化,您的行高会发生变化。
相反,您希望RowDefinition
成为内容的高度。在这种情况下,当分辨率发生变化时,行高不会改变。
<RowDefinition Height="Auto"/>
将网格放在ScrollViewer
中是个好主意,以防网格变得比屏幕大。
<ScrollViewer>
<Grid>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
...
在您的特定示例中,我会使用StackPanel
。
<ScrollViewer>
<StackPanel>
<Button ...
答案 1 :(得分:1)
我认为隐藏不可见区域中的现有按钮是一种不好的做法。用户应滚动以访问底部按钮。如果您需要支持低分辨率显示器,应用程序应调整到当前分辨率。 我想最好的方法是减少边距,为RowDefinitions设置*并限制网格高度以防止巨大的拉伸。