【问题标题】:Set DataGrid size to fit all its contents设置 DataGrid 大小以适合其所有内容
【发布时间】:2011-02-24 10:23:00
【问题描述】:

我需要使 DataGrid 的大小适合其所有内容(即使 DataGrid 将大于它的父级)。有可能吗?

【问题讨论】:

    标签: silverlight controls silverlight-toolkit


    【解决方案1】:

    所以,我找到的答案...只需将 DataGrid 垂直放入 StackPanel 即可。它具有无限的高度,因此网格将根据需要占用尽可能多的空间。

    【讨论】:

      【解决方案2】:

      编辑:回复:原始发帖人的评论

      你好,

      您的问题的真正答案是--我确定您不想听到这个。没有办法让孩子脱离并做自己的事情。

      但是,我们可以使用一些模式来解决该问题。这些变通方法会产生类似于您想要的效果。最难的是打破由 DataGrid 的父级确定的限制。据我所知,你只有两条路可以走:

      选项 1:重构所有父级以使用 DataGrid 调整大小。最好的方法是在所有东西上使用 MinWidth 和 MinHeight 属性。默认情况下,他们将使用他们的大小,但如果他们的孩子需要更多空间,他们会扩大。这样做可以让 DataGrid 根据需要进行扩展。

      <Grid MinWidth="500" MinHeight="500">
         <sdk:DataGrid ItemsSource="{Binding Items}">
      </Grid>
      

      选项 2:将 DataGrid 放在“父”控件上。想想 HTML/CSS。这是最棘手的概念,因为您必须“知道”将 DataGrid 放在哪里以及它将如何增长。您可以添加一个剪切路径,使 DataGrid 看起来像是 Grid 的子级,但这是对另一篇文章的回答。

      <Grid Width="500", Height="500"/>
      <sdk:DataGrid ItemsSource="{Binding Items}" Margin="300,300,0,0"/>
      

      再一次,我希望这会有所帮助。如果您还需要什么,请告诉我。


      你好,

      我假设您想要 DataGrid 上的滚动条。

      默认情况下,DataGrid 将生成所有列。但是,因为默认情况下它不启用滚动条,所以它会尝试将找到的所有列放入一个屏幕中。您可以通过设置 DataGrid 的 ScrollViewer 来启用这些滚动条以显示它们。

      如果这不是您需要的,请告诉我。

      祝你有美好的一天!

      <sdk:DataGrid 
      ItemsSource="{Binding Items}" 
      AutoGenerateColumns="True"
      ScrollViewer.HorizontalScrollBarVisibility="Visible"     
      ScrollViewer.VerticalScrollBarVisibility="Visible"/>
      

      附:如果您手动设置列,请不要设置Width="*"。设置Width="*" 告诉DataGrid 只使用一个屏幕中可用的剩余宽度。

      避免这种情况! &lt;sdk:DataGridTextColumn ... Width="*"/&gt;

      【讨论】:

      • 没有。我想要没有列的 DataGrid,但要足够大以容纳它的所有内容。
      • 希望我的编辑对您有所帮助。我还没有找到一个简单的方法来做你想做的事。
      • 我不想让任何孩子脱离。我需要一个非常简单的东西 - DataGrid 足够大,可以同时容纳所有行,而无需任何滚动。它的一部分将是不可见的,是的,但这不是问题。
      猜你喜欢
      • 2015-12-27
      • 1970-01-01
      • 2019-05-10
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多