在问this question之后,我意识到也许我应该问一个更通用的问题。所以,这里是:
在WPF中,我正在创建一个自定义的Panel派生控件。对于该控件,我想添加水平和垂直滚动条并自己控制它们(获取和设置min / max / value / pagesize)。我怎么能这样做?
这是我第一次遇到WPF,我还不熟悉模板和样式,所以我不知道答案是在那里还是其他地方。
答案 0 :(得分:2)
System.Windows.Controls.Primitives.IScrollInfo
; ScrollViewer
; CanContentScroll
上的ScrollViewer
属性设置为True
。瞧!
答案 1 :(得分:1)
是。答案不在于小组,而在于ScrollViewer。您的小组不应该关注滚动条。让ScrollViewer测量并排列您的面板。因此,您的可视树将首先包含ScrollViewer,然后是您的面板:
<ScrollViewer>
<cc:YourPanel/>
</ScrollViewer>
如果您想控制ScrollViewer,您可能希望继承它或自定义其模板。
答案 2 :(得分:0)
滚动查看器需要位于模板中,默认设置中位于边框附近:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type control:MyCustomControl}">
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ItemsPresenter />
</Border>
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>