我的屏幕上有一个嵌套的数据网格。它不占用我窗口的整个空间。我设置了数据网格的高度和宽度。我的问题是每个屏幕分辨率的数据网格大小是相同的。如何根据分辨率进行调整? 我可以用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" >
答案 0 :(得分:1)
试试这个:
<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
,如果您不使用它,请不要这样做。仅Grid
就足以成为DataGrid
等单一控件的容器。如果您设置了Rows
和Columns
,则可以将Width
和Height
设置为以下三种值类型之一:
Auto
- Rows
或Columns
会调整大小以获取与其内容一样多的空间*
- 这是一个比例标记,因此当您有三个列时,将星形宽度设置为一列,将使此列占用所有可用空间。另一方面,如果您有两列,并将Width="*"
设置为第一列,Width="2*"
设置为第二列,则所有可用空间将分为3个部分,第一列将获得1/3它和第二个2/3(你可以随意玩它)。