[英]resize datagrid based on a screen resolution
我的屏幕上有一个嵌套的数据网格,它不占用窗口的整个空间,我已经设置了数据网格的高度和宽度。 我的问题是,在每种屏幕分辨率下,数据网格的大小都相同。 如何使它根据分辨率进行调整? 我可以用MinWidth和MaxWidth做到这一点吗? 或类似的东西?如果我使用SizeToContent,它不会最大化窗口。
<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" >
尝试这个:
<Grid>
<DataGrid Name="tabela"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
IsReadOnly="True"
AlternatingRowBackground="#eeeeee"
ItemsSource="{Binding}"
AutoGenerateColumns="False"
RowDetailsVisibilityChanged="tabela_RowDetailsVisibilityChanged"
SelectionChanged="tabela_SelectionChanged" >
</DataGrid>
</Grid>
如果要根据控件的父控件大小调整控件大小(在本例中为窗口),则根本不能设置“ Width
和“ Height
。 您可以根据需要使用MinWidth
, MinHeight
, MaxWidth
和MaxHeight
,但是在大多数情况下,控件只是拉伸以占用所有可用空间。 它是由HorizontalAlignment="Stretch"
和VerticalAlignment="Stretch"
(在大多数情况下,它们是默认值,但如果您在其他地方覆盖了它们,则我已对其进行了明确设置)。
另一件事是,如果您使用ColumnDefinitions
和RowDefinitions
设置了Grid
,则在不使用它时不要这样做。 只需Grid
就足以成为单个控件(例如DataGrid
的容器。 如果您确实设置了Rows
和Columns
,则可以将其Width
和Height
设置为以下三种值类型之一:
Auto
- Rows
或Columns
将调整大小以占用与其内容一样多的空间 *
-这是一个比例标记,因此当您将星形宽度设置为三列时,将其设置为一列将使该列占用所有可用空间。 另一方面,如果您有两列,并且将Width="*"
设置为第一列,并将Width="2*"
设置为第二列,则所有可用空间将分为3部分,第一列将得到1 / 3个,第二个2/3(您可以根据需要使用它)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.