2017-10-17 484 views
0

我的屏幕上有一個嵌套的數據網格,它不佔用我窗口的整個空間。我設置了數據網格的高度和寬度。我的問題是,當每個屏幕分辨率的數據網格大小是相同的。我如何根據分辨率進行調整? 我可以用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" > 

回答

1

試試這個到他們的父母大小(在這種情況下,這是您的窗口),您根本無法設置WidthHeight。如果您願意,您可以使用MinWidth,MinHeight,MaxWidthMaxHeight進行遊戲,但在大多數情況下,控件只需拉伸即可佔用所有可用空間。它由HorizontalAlignment="Stretch"VerticalAlignment="Stretch"(大多數情況下這些是默認值,但我已經明確設置它們以防其他地方重寫)。

另一件事是,如果您設置GridColumnDefinitionsRowDefinitions,不要這樣做,如果你不使用它。只需Grid就足以成爲單個控件的容器,例如DataGrid。如果設置RowsColumns,你可以設置自己WidthHeight三個值類型之一:

  • 精確值(例如100)
  • Auto - RowsColumns將調整拿一樣多的空間作爲它們的內容
  • * - 這是一個比例標記,因此如果將星形寬度設置爲一列而您有三列,則會使該列佔據所有可用空間。另一方面,如果您有兩列,並且您將Width="*"設置爲第一個,將Width="2*"設置爲第二個,則所有可用空間將分爲3個部分,第一列將獲得1/3,第二個2/3(你可以隨心所欲地玩)。