基于屏幕分辨率调整数据网格的大小

基于屏幕分辨率调整数据网格的大小

问题描述:

我的屏幕上有一个嵌套的数据网格,它不占用我窗口的整个空间。我设置了数据网格的高度和宽度。我的问题是,当每个屏幕分辨率的数据网格大小是相同的。我如何根据分辨率进行调整? 我可以用MinWidth和MaxWidth以某种方式做到这一点吗?或类似的东西?如果我使用SizeToContent,它不会最大化窗口。基于屏幕分辨率调整数据网格的大小

这是窗口应该如何看 This is how the window should look 这是电网与主表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" > 

试试这个到他们的父母大小(在这种情况下,这是您的窗口),您根本无法设置WidthHeight。如果您愿意,您可以使用MinWidth,MinHeight,MaxWidthMaxHeight进行游戏,但在大多数情况下,控件只需拉伸即可占用所有可用空间。它由HorizontalAlignment="Stretch"VerticalAlignment="Stretch"(大多数情况下这些是默认值,但我已经明确设置它们以防其他地方重写)。

另一件事是,如果您设置GridColumnDefinitionsRowDefinitions,不要这样做,如果你不使用它。只需Grid就足以成为单个控件的容器,例如DataGrid。如果设置RowsColumns,你可以设置自己WidthHeight三个值类型之一:

  • 精确值(例如100)
  • Auto - RowsColumns将调整拿一样多的空间作为它们的内容
  • * - 这是一个比例标记,因此如果将星形宽度设置为一列而您有三列,则会使该列占据所有可用空间。另一方面,如果您有两列,并且您将Width="*"设置为第一个,将Width="2*"设置为第二个,则所有可用空间将分为3个部分,第一列将获得1/3,第二个2/3(你可以随心所欲地玩)。