【问题标题】:Autostretch datagrid within a window?在窗口内自动拉伸数据网格?
【发布时间】:2013-02-26 01:08:08
【问题描述】:

我创建了一个数据网格并将其放置在 WPF 表单中的某个位置。

现在我要做的是让数据网格更改其大小,使其保持与原始位置相同的比例,同时 WPF 窗口更改大小(希望这是有道理的)。

我尝试将 autostretch 设置为 true,但没有帮助。

【问题讨论】:

  • 您是否尝试过设置左右边距值,以使网格相对于表单强制拉伸/收缩?

标签: c# wpf xaml datagrid


【解决方案1】:

在我的办公室里有我的计算机和 Visual Studio,所以无法测试它:) 但是如果你将对齐设置为拉伸,这不应该工作吗?

datagridObj.Horizo​​ntalAlignment = System.Windows.Horizo​​ntalAlignment.Stretch; datagridObj.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;

【讨论】:

    【解决方案2】:

    这当然有道理,但听起来您并不真正了解 WPF 布局系统的工作原理,除非您这样做,否则将来会非常痛苦。简短的故事是,您需要有一个合适的容器——我推荐使用 Grid——并将 DataGrid 放置在该容器中。然后,您可以为 DataGrid 设置边距等,以随心所欲地放置它,并且如果它的 Width 和 Height 设置为 Auto,它将与它的父容器保持一致。

    现在,如果您在图片中有几个其他控件,当然它会涉及更多,但我仍然建议保留网格并将它们分成您需要的任意多行和多列,然后为它们的高度设置适当的值/分别为宽度 - 您可以使某些列的宽度固定,或其他列的倍数,或者将它们保留为 Auto,它们将占用剩余的空间。

    当然,该主题涉及更多,但您可以在 MSDN 上找到快速入门:http://msdn.microsoft.com/en-us/library/ms745058.aspx

    如果您只记得一件事,应该是这样的:网格表示 WPF 中的流体布局,尽可能多地使用它们而不是画布。当然 StackPanel 和 DockPanel 等都有自己的具体用途。

    附:视觉工作室设计师通常会做一些乱七八糟的事情,通过设置边距等使拖放更直观,你应该密切关注它修改的属性,看看你是否最好手动定位东西通过在绘制布局后修改 XAML(通常是这样)。

    【讨论】:

      【解决方案3】:

      举个例子

      <Window x:Class=""
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              Title="MainWindow" Height="350" Width="525">
          <Grid>
              <DataGrid Margin="162,57,141,54"/>
          </Grid>
      </Window>
      

      默认情况下DataGrid

      HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch"
      

      所以你只需要像 Arno Saxena 告诉你的那样的保证金

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-11
        • 2012-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多