基于屏幕分辨率调整数据网格的大小
问题描述:
我的屏幕上有一个嵌套的数据网格,它不占用我窗口的整个空间。我设置了数据网格的高度和宽度。我的问题是,当每个屏幕分辨率的数据网格大小是相同的。我如何根据分辨率进行调整? 我可以用MinWidth和MaxWidth以某种方式做到这一点吗?或类似的东西?如果我使用SizeToContent,它不会最大化窗口。基于屏幕分辨率调整数据网格的大小
这是窗口应该如何看 这是电网与主表XAML的定义:如果你希望你的控件根据调整
<Grid>
<DataGrid Name="tabela"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
IsReadOnly="True"
AlternatingRowBackground="#eeeeee"
ItemsSource="{Binding}"
AutoGenerateColumns="False"
RowDetailsVisibilityChanged="tabela_RowDetailsVisibilityChanged"
SelectionChanged="tabela_SelectionChanged" >
</DataGrid>
</Grid>
:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="30"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="209*" />
</Grid.ColumnDefinitions>
<DataGrid Name="tabela" Grid.Row="1" Width="1100" Height="700" HorizontalAlignment="Center" IsReadOnly="True" AlternatingRowBackground="#eeeeee" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto" ItemsSource="{Binding}" AutoGenerateColumns="False" RowDetailsVisibilityChanged="tabela_RowDetailsVisibilityChanged" SelectionChanged="tabela_SelectionChanged" >
答
试试这个到他们的父母大小(在这种情况下,这是您的窗口),您根本无法设置Width
和Height
。如果您愿意,您可以使用MinWidth
,MinHeight
,MaxWidth
和MaxHeight
进行游戏,但在大多数情况下,控件只需拉伸即可占用所有可用空间。它由HorizontalAlignment="Stretch"
和VerticalAlignment="Stretch"
(大多数情况下这些是默认值,但我已经明确设置它们以防其他地方重写)。
另一件事是,如果您设置Grid
与ColumnDefinitions
和RowDefinitions
,不要这样做,如果你不使用它。只需Grid
就足以成为单个控件的容器,例如DataGrid
。如果设置Rows
和Columns
,你可以设置自己Width
和Height
三个值类型之一:
- 精确值(例如100)
-
Auto
-Rows
或Columns
将调整拿一样多的空间作为它们的内容 -
*
- 这是一个比例标记,因此如果将星形宽度设置为一列而您有三列,则会使该列占据所有可用空间。另一方面,如果您有两列,并且您将Width="*"
设置为第一个,将Width="2*"
设置为第二个,则所有可用空间将分为3个部分,第一列将获得1/3,第二个2/3(你可以随心所欲地玩)。