代码之家  ›  专栏  ›  技术社区  ›  Alexander

根据屏幕分辨率调整数据网格大小

  •  0
  • Alexander  · 技术社区  · 9 年前

    我的屏幕上有一个嵌套的数据网格。它不占我窗户的全部空间。我已经设置了数据网格的高度和宽度。我的问题是,当数据网格大小在每个屏幕分辨率上都相同时。如何根据分辨率进行调整? 我可以用MinWidth和MaxWidth来实现吗?或者类似的?如果我使用SizeToContent,它不会最大化窗口。

    This is how the window should look 这是网格和主表的XAML定义:

    <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 回复  |  直到 9 年前
        1
  •  1
  •   Kacper Stachowski    9 年前

    试试这个:

    <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" (在大多数情况下,这些都是默认值,但我已经明确设置了它们,以防在其他地方被覆盖)。

    另一件事是如果你建立一个 Grid 具有 ColumnDefinitions RowDefinitions ,如果你不使用它,就不要这样做。只是 网格 足以作为单个控件的容器,例如 DataGrid . 如果你设置了 Rows Columns 宽度 和 身高 到三种值类型之一:

    • 精确值(例如100)
    • Auto - 排 柱
    • * -这是一个比例标记,因此当你有三个星号时,将星号宽度设置为一列,将使该列占据所有可用空间。另一方面,如果有两列 Width="*" 到第一个和 Width="2*" 对于第二个,所有可用空间将分为3个部分,第一列将获得其中的1/3,第二列将获得其中的2/3(您可以随心所欲地玩它)。
    推荐文章