我的Silverlight项目中有一个ScrollViewer,它包含带内容的扩展器。 VerticalScrollBarVisibility设置为Auto和 HorizontalScrollBarVisibility设置为Disabled,因为它不需要。 问题是当我展开一个或多个扩展器以便可以看到垂直滚动条时,它会将扩展器内的内容略微向左推。 当(垂直)滚动条出现时,如果它没有将扩展器/内容推向左侧,我怎么能这样做呢?
我无法上传图片,所以上传的扩展示例到TinyPic:
http://i42.tinypic.com/xvamd.png
提供的示例代码谢谢!
答案 0 :(得分:2)
您可以执行以下操作:
<ScrollViewer Name="scrollViewer1"
Grid.Row="1"
Grid.ColumnSpan="2"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
BorderBrush="{x:Null}"
VerticalScrollBarVisibility="Auto">
<!-- New Bit -->
<ScrollViewer.Style>
<Style TargetType="{x:Type ScrollViewer}">
<Style.Resources>
<Thickness x:Key="InvisScrollBarDimension"
Bottom="0"
Left="0"
Right="{StaticResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"
Top="0" />
</Style.Resources>
<Setter Property="Margin"
Value="{StaticResource InvisScrollBarDimension}" />
<Style.Triggers>
<Trigger Property="ComputedVerticalScrollBarVisibility"
Value="Visible">
<Setter Property="Margin"
Value="0" />
</Trigger>
</Style.Triggers>
</Style>
</ScrollViewer.Style>
...
ScrollViewer
基于系统参数Margin
,当VerticalScrollBarWidthKey
不可见Scrollbar
Trigger
时,概念就会给ComputedVerticalScrollBarVisibility
一个权利Scrollbar
当{{1}}可见时,1}}帮助我们确定并将其重置为0.
这应该在运行时给出无抖动效果。