【发布时间】:2011-02-24 10:23:00
【问题描述】:
我需要使 DataGrid 的大小适合其所有内容(即使 DataGrid 将大于它的父级)。有可能吗?
【问题讨论】:
标签: silverlight controls silverlight-toolkit
我需要使 DataGrid 的大小适合其所有内容(即使 DataGrid 将大于它的父级)。有可能吗?
【问题讨论】:
标签: silverlight controls silverlight-toolkit
所以,我找到的答案...只需将 DataGrid 垂直放入 StackPanel 即可。它具有无限的高度,因此网格将根据需要占用尽可能多的空间。
【讨论】:
编辑:回复:原始发帖人的评论
你好,
您的问题的真正答案是否--我确定您不想听到这个。没有办法让孩子脱离并做自己的事情。
但是,我们可以使用一些模式来解决该问题。这些变通方法会产生类似于您想要的效果。最难的是打破由 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 只使用一个屏幕中可用的剩余宽度。
避免这种情况! <sdk:DataGridTextColumn ... Width="*"/>
【讨论】: