我正在创建一个UI界面,其中心组件是一个scrollviewer,它包含一个可变数量的item的stackpanel。如果屏幕上没有足够的空间,左右两侧会出现按钮,通过scrollviewer来浏览stackpanel中的item。需要注意的是,所有的item大小都相同。
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="LeftButton" Width="Auto"/>
<ColumnDefinition x:Name="Content" Width="*"/>
<ColumnDefinition x:Name="RightButton" Width="Auto"/>
</Grid.ColumnDefinitions>
这个功能目前可以正常工作。但是,现在要求只显示完整的项目。因此,如果StackPanel中有更多的项,而屏幕上无法全部显示,则不希望右侧或左侧出现部分项。我只想让滚动条出现,表示有更多的可用项。
因此,如果向StackPanel添加子项,包含StackPanel的ScrollViewer应检查屏幕上是否有足够的空间来显示所有项。如果没有,则应减小其宽度,以隐藏下一个(部分可见)项。
我的问题是:确定StackPanel中的所有项目是否可以在屏幕上显示的最佳方法是什么?如果不能,如何实现隐藏部分项?
我已经尝试了调整ScrollViewer自身的宽度,并依赖于SizeChanged事件,但我不确定这是否是实现此行为的最明智方法。最好在初始化时确定scrollviewer的MaxWidth,设置它,然后让它增长吗?
谢谢, 好奇心