【问题标题】:How to make a wpf datagrid fill all available space and resize with window?如何使 wpf 数据网格填充所有可用空间并使用窗口调整大小?
【发布时间】:2013-12-17 02:57:14
【问题描述】:

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

【问题讨论】:

  • 显示您的代码。您的父网格也必须根据code 正确设置。
  • 根据@dirt 的要求,请显示代码。一般来说,出于这个特殊原因,我不使用Grid。每当我需要动态调整控件的大小时,我都会使用DockPanelStackPanel 来安排我的控件。它提供了很大的灵活性,因为DockPanel 用最后定义的逻辑子元素填充了可用空间

标签: .net wpf silverlight windows-phone-7


【解决方案1】:

您应该能够通过将 HorizontalAlignmentVerticalAlignment 设置为 Stretch 来为数据网格(或任何 WPF 控件)执行此操作

如果它在 Grid 中,您应该可以设置类似的内容

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

【讨论】:

  • 您可能还想在您的Window 控件上设置SizeToContent="WidthAndHeight"
  • HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 声明没有用,因为Stretch is the default value.
【解决方案2】:
  1. 切勿为其或其父控件设置高度或宽度
  2. 无需担心水平和垂直对齐,因为默认情况下水平和垂直对齐是拉伸的。 如果以上是正确的事情应该工作:)

【讨论】:

    【解决方案3】:

    将 DataGrid 的最后一列的宽度设置为 *。

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

    注意:这实际上只适用于 DataGrid 的最后一列

    【讨论】:

    • *星是宽度的无效输入
    • @MohamedKamelBouzekria,他们为什么完全按照我的意愿去做?
    • @MohamedKamelBouzekria,感谢您的编辑,现在说得通了。
    【解决方案4】:

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

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

    【讨论】:

    • 不是Grid,是DataGrid
    【解决方案5】:

    直接将 DataGrid 插入到 Grid 中而不用面板包裹。

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

    【讨论】:

    • 这行不通,因为 DataGrid 将占用所需的空间,而不是填满所有可用空间
    • 讽刺的是,这是正确的答案。
    猜你喜欢
    • 2011-01-17
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2013-12-06
    • 2017-08-04
    • 1970-01-01
    相关资源
    最近更新 更多