动态调整滚动查看器的宽度

时间:2012-02-08 09:09:54

标签: c# wpf scrollviewer

我正在创建一个UI,它的核心组件是一个滚动查看器,它包含一个带有可变数量项目的堆栈面板。如果屏幕上没有足够的空间,则左侧和右侧的按钮似乎允许使用滚动查看器单击堆栈面板。请注意,这些项目的大小都相同。

<Grid.ColumnDefinitions>
   <ColumnDefinition x:Name="LeftButton" Width="Auto"/>
   <ColumnDefinition x:Name="Content" Width="*"/>
   <ColumnDefinition x:Name="RightButton" Width="Auto"/>
</Grid.ColumnDefinitions>

这很好用。但是,我现在只需要显示完整/完整的项目。因此,如果stackpanel中有更多项目,我可以在屏幕上显示,我不希望显示右侧或左侧的部分项目。我只想要我的滚动按钮出现,表示有更多项目可用。 因此,如果将子项添加到堆栈面板,则持有堆栈面板的滚动查看器应查看屏幕上是否有足够的空间来显示所有项目。如果不是,它应该减小它的宽度,以便隐藏下一个(部分可见的)项目。

我的问题是:确定是否可以在屏幕上显示堆叠面板中的所有项目的最佳方法是什么。如果没有,我怎样才能隐藏可能显示的部分项目?

我已经玩过Scrollviewer本身的宽度,依赖于 SizeChanged 事件,但我不确定这是否是实现此行为最明智的方法。在初始化时确定滚动查看器的 MaxWidth 是否更好,相应地设置并让它增长?

提前致谢, 好奇心

1 个答案:

答案 0 :(得分:1)

我认为,由于这是一个自定义的滚动查看器,因此您根本不需要使用默认的scrollviewer,而是使用基于stackpanel的自己的控件来显示项目。你甚至可以实现一个动画,这样当按下左或右按钮时,它会以一种很好的方式滚动。