繁体   English   中英

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

[英]resize datagrid based on a screen resolution

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

这是窗口的外观 这是窗口的外观 这是表格和主表的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" >

尝试这个:

<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 您可以根据需要使用MinWidthMinHeightMaxWidthMaxHeight ,但是在大多数情况下,控件只是拉伸以占用所有可用空间。 它是由HorizontalAlignment="Stretch"VerticalAlignment="Stretch" (在大多数情况下,它们是默认值,但如果您在其他地方覆盖了它们,则我已对其进行了明确设置)。

另一件事是,如果您使用ColumnDefinitionsRowDefinitions设置了Grid ,则在不使用它时不要这样做。 只需Grid就足以成为单个控件(例如DataGrid的容器。 如果您确实设置了RowsColumns ,则可以将其WidthHeight设置为以下三种值类型之一:

  • 精确值(例如100)
  • Auto - RowsColumns将调整大小以占用与其内容一样多的空间
  • * -这是一个比例标记,因此当您将星形宽度设置为三列时,将其设置为一列将使该列占用所有可用空间。 另一方面,如果您有两列,并且将Width="*"设置为第一列,并将Width="2*"设置为第二列,则所有可用空间将分为3部分,第一列将得到1 / 3个,第二个2/3(您可以根据需要使用它)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM