我的wpf应用程序中有一个有趣的问题。
我正在使用mvvm,并且项目是在绑定到视图模型的内容控件中组合的。
例如:
<Shell>
<ScrollViewer>
<StackPanel>
<ContentControl Content="{Bidning SomeVM}"/>
<ContentControl Content="{Bidning SomeVM2}"/>
<ContentControl Content="{Bidning SomeVM3}"/>
</StackPanel>
</ScrollViewer>
</Shell>
如果堆栈面板只有一个项目,它可以正常工作,但由于某种原因,每个视图(解析后的形式)都需要比实际需要更多的空间(高度)。
视图中包含GroupBox和数据网格。
所以这是我的问题,有什么建议吗?
答案 0 :(得分:1)
StackPanel将在方向的方向上测量它的无限子,默认为垂直。因此,您的物品将以无限高度进行测量,这实际上意味着它们的尺寸将达到内容 - 例如DataGrid将为列表中的每个项目分配,测量和排列记录(假设没有在控件上设置约束)。另请注意,因为它依赖于使用特定约束进行测量,因此它们将不会进行虚拟化。
注意,即使你使用了不同的面板,你也可能会得到这种行为,因为ScrollViewer中的ScrollContentPresenter会测量它的无限子节点,如果它正在执行滚动 - 如果CanContentScroll设置为false或者如果ItemsPanel会发生这种情况没有实现IScrollInfo。
我不确定您希望实现什么类型的布局,因此很难提供任何具体的建议。