WPF DataGrid的MaxWidth设置为100%可用空间
WPF DataGrid的MaxWidth设置为100%可用空间
我遇到了一个无法解决的不寻常问题。我想要使用具有固定列大小的DataGrid,并且该DataGrid的大小会自动调整到父级大小。结构大致如下:
将UserControl放置在ScrollViewer中,除非达到最小宽度,否则它会正确地调整大小以适应父级,并显示滚动条。当有人调整窗口大小时,UserControl上的所有控件都会被拉伸。唯独DataGrid不会。无论我如何尝试,它都不会启用水平滚动条,而是将UserControl的宽度调整为DataGrid的宽度。当然,这会在UserControl下面启用滚动条,而我想要避免这种情况。
简而言之,我希望DataGrid占用可用宽度的100%,但不能超过这个宽度。
我也尝试了类似于以下的方法,但失败了 🙁
此外,钩住SizeChanged事件并最初将DataGrid的宽度设置为某个较小的固定值也没有成功。可能是因为我在UserControl派生的代码上操作。
我需要建议。
问题的原因是在DataGrid周围有一个ScrollViewer,这会导致DataGrid不知道其父控件的宽度-它告诉DataGrid它有无限的空间。解决方法是完全去除DataGrid周围的ScrollViewer,然后在DataGrid上设置HorizontalAlignment=Stretch属性。在包含DataGrid的Grid上也要设置这个属性,并确保没有设置Width属性(设置MinWidth应该没问题)。如果尝试后还有问题,可以将代码编辑到问题中。如上所示,UserControl中没有ScrollView。可能在父控件中有ScrollView,但我没有修改父控件代码的方法(至少合法的)。