.net 如何使wpf数据网格填满所有可用空间并使用窗口调整大小?

.net 如何使wpf数据网格填满所有可用空间并使用窗口调整大小?,.net,wpf,silverlight,windows-phone-7,.net,Wpf,Silverlight,Windows Phone 7,如何使wpf数据网格填满所有可用空间并使用窗口调整大小? 请注意,数据网格位于网格内部。您应该能够通过将水平对齐和垂直对齐设置为拉伸来为数据网格(或任何WPF控件)执行此操作 如果它在一个网格内,你应该能够设置如下内容 <Grid> <!-- parent grid or whatever --> <DataGrid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ... > &l

如何使wpf数据网格填满所有可用空间并使用窗口调整大小?
请注意,数据网格位于网格内部。

您应该能够通过将
水平对齐
垂直对齐
设置为
拉伸
来为数据网格(或任何WPF控件)执行此操作

如果它在一个网格内,你应该能够设置如下内容

<Grid> <!-- parent grid or whatever -->
   <DataGrid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ... >
   </DataGrid>
</Grid>

  • 切勿为其或其父控件设置高度或宽度
  • 无需担心水平和垂直对齐,因为默认情况下,水平和垂直对齐是拉伸的。 如果以上都是正确的,那么应该采取以下措施:)

  • 删除其父控件的所有高度和宽度属性。删除水平和垂直属性。将行高度定义为其父栅格的*

    <Grid> 
    <Grid.RowDefinitions>
    <RowDefinition Height="*"/>
    <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
       <DataGrid Grid.Row="0" >
       </DataGrid>
    </Grid>
    

    直接将DataGrid插入网格,无需使用面板包装

        <Grid>
           <DataGrid>
           </DataGrid>
        </Grid>
    

    将数据网格最后一列的宽度设置为*

    <DataGridTextColumn Header="Notes"
                        Binding="{Binding Notes}"
                        Width="*"/>
    
    
    

    注意:这实际上只适用于DataGrid的最后一列显示代码。根据
    代码
    ,您的父网格也必须正确设置。如@dirt请求,请显示代码。由于这个特殊的原因,我通常不使用
    网格
    。每当需要动态调整控件大小时,我都会使用
    DockPanel
    StackPanel
    来排列控件。它提供了很大的灵活性,因为
    DockPanel
    使用最后定义的逻辑子项填充可用空间。它不是网格,而是DataGrid。您可能还需要在
    窗口
    控件上设置
    SizeToContent=“WidthAndHeight”
    。对于Width@MohamedKamelBouzekria,他们为什么要做我想做的事?@MohamedKamelBouzekria,谢谢你的编辑,现在有意义了。这不起作用,因为DataGrid会占用尽可能多的空间,而且不会填满所有可用的空间