【发布时间】:2009-06-03 15:55:54
【问题描述】:
我有一个 WPF ScrollViewer,我想访问它的模板的 ScrollContentPresenter。
【问题讨论】:
标签: wpf templates controls scrollviewer
我有一个 WPF ScrollViewer,我想访问它的模板的 ScrollContentPresenter。
【问题讨论】:
标签: wpf templates controls scrollviewer
如果您希望访问 ScrollViewer 的 ScrollContentPresenter,您可以使用 ControlTemplate
<ScrollViewer Style="{StaticResource LeftScrollViewer}"/>
<Style x:Key="LeftScrollViewer" TargetType="{x:Type ScrollViewer}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ScrollViewer}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ScrollContentPresenter Grid.Column="1"/>
<ScrollBar Name="PART_VerticalScrollBar"
Value="{TemplateBinding VerticalOffset}"
Maximum="{TemplateBinding ScrollableHeight}"
ViewportSize="{TemplateBinding ViewportHeight}"
Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>
<ScrollBar Name="PART_HorizontalScrollBar"
Orientation="Horizontal"
Grid.Row="1"
Grid.Column="1"
Value="{TemplateBinding HorizontalOffset}"
Maximum="{TemplateBinding ScrollableWidth}"
ViewportSize="{TemplateBinding ViewportWidth}"
Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
【讨论】:
与其尝试从 ScrollViewer 往下走,也许您想从 Content 中绑定一些东西up?
类似:
<Grid Width={Binding Path=ActualWidth RelativeBinding={RelativeBinding FindAncestor, AncestorType={x:Type ScrollContentPresenter}}}>
注意:该语法可能不是 100% 正确,我想不到
【讨论】: