WPF DataGrid MaxWidth 设置为 100% 可用空间
Posted
技术标签:
【中文标题】WPF DataGrid MaxWidth 设置为 100% 可用空间【英文标题】:WPF DataGrid MaxWidth set to 100% availiable space 【发布时间】:2011-12-16 11:58:01 【问题描述】:我遇到了无法解决的异常问题。我想使用具有固定列大小的 DataGrid,该列大小将达到父级。结构看起来不像这样:
UserControl 正确地将 ScrollViewer 大小设置为父级,除非它达到 MinWidth 然后出现滚动条。当有人调整窗口大小时,UserControl 上的所有控件都会被拉伸。只有个人是DataGrid。无论我尝试多少,它都不想启用水平滚动,它总是使 UserControl 缩放到它的宽度。这当然可以在我想要阻止的 UserControl 下滚动。
简而言之,我希望 DataGrid 占用 100% 的可用宽度,但不会更多。
<Window>
<ScrollViewer>
<UserControl>
<Grid>
<DataGrid>
</DataGrid>
</Grid>
</UserControl>
</ScrollViewer>
</Window>
我也尝试做类似的事情,但失败了:(
<Window>
<ScrollViewer>
<UserControl>
<Grid>
<ScrollViewer>
<DockPanel>
<DataGrid>
</DataGrid>
</DockPanel>
</ScrollViewer>
</Grid>
</UserControl>
</ScrollViewer>
</Window>
还连接到 SizeChanged 并最初将 DataGrid 的 Width 设置为一些小的固定值事件并没有进行测试。可能是因为我操作的是 UserControl 派生代码。
我需要建议。
【问题讨论】:
***.com/questions/5028894/… 【参考方案1】:完全摆脱 DataGrid 周围的 ScrollViewer,这将导致 DataGrid 不知道其父控件的宽度 - 它告诉 DataGrid 它有无限空间。
只需尝试在第一个示例中放置 DataGrid,并在 DataGrid 上设置 HorizontalAlignment=Stretch
。这应该是包含 DataGrid 的 Grid 上的默认设置,但为了确定,也将其设置在那里。还要确保你没有设置宽度属性(MinWidth 应该没问题)。
在你试一试后将你的代码编辑到你的问题中。
【讨论】:
正如您在上面看到的 UserControl 没有 ScrollView。父控件中可能有ScrollView,但我没有任何办法修改父代码(至少合法)。以上是关于WPF DataGrid MaxWidth 设置为 100% 可用空间的主要内容,如果未能解决你的问题,请参考以下文章
当 SelectionMode 设置为 Cell 时,如何突出显示 WPF DataGrid 中的一行