ScrollViewer改变内容(ItemControl)的大小,而不是显示滚动条。
ScrollViewer改变内容(ItemControl)的大小,而不是显示滚动条。
我有一个包含ItemsControl
的WPF UserControl,其中ItemsPanel
是一个水平的StackPanel
(基本上是一种WinRT Hub Control)。内容扩展了UserControl的大小。
如果我尝试在我的ItemsControl
周围添加一个ScrollViewer
,ScrollViewer
会缩小ItemsControl
,使所有项目都适应UserControl的边界。
这与我预期的完全相反,有人可以告诉我为什么ScrollViewer
会表现出这种方式吗?
这是我的
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" xmlns:contentModule="clr-namespace:ContentModule" xmlns:regions="http://www.codeplex.com/CompositeWPF" xmlns:statics="clr-namespace:Infrastructure.Statics;assembly=Infrastructure" d:DesignHeight="300" d:DesignWidth="300" d:DataContext="{d:DesignInstance contentModule:ContentViewModel}" VerticalAlignment="Top" HorizontalAlignment="Left">
项目是通过Prism RegionManager注入的。
编辑1:
编辑2:
一些更多的细节。
当改变<表单>/
如果我添加一个
但我无法使其保持缩放并在
问题的原因是ItemsControl的内容超出了可见区域,但是默认情况下,ScrollViewer会调整内容的大小以适应可见区域,而不是显示滚动条。解决方法是将ItemsControl放置在ScrollViewer中,并设置ScrollViewer的HorizontalScrollBarVisibility属性为Auto,VerticalScrollBarVisibility属性为Disabled,这样就可以显示滚动条了。
具体解决方法的代码如下:
通过将ItemsControl的模板设置为上述代码中的ControlTemplate,并将ItemsControl放置在ScrollViewer中,再设置ScrollViewer的滚动条可见性属性,就可以解决问题,并显示滚动条。