C# 如何在WPF中向自定义控件添加滚动条?
问了之后,我意识到也许我应该问一个更一般的问题。下面是: 在WPF中,我创建了一个自定义面板派生控件。对于该控件,我想添加水平和垂直滚动条,并自己控制它们(获取和设置min/max/value/pagesize)。我该怎么做C# 如何在WPF中向自定义控件添加滚动条?,c#,.net,wpf,scrollbars,C#,.net,Wpf,Scrollbars,问了之后,我意识到也许我应该问一个更一般的问题。下面是: 在WPF中,我创建了一个自定义面板派生控件。对于该控件,我想添加水平和垂直滚动条,并自己控制它们(获取和设置min/max/value/pagesize)。我该怎么做 这是我第一次接触WPF,我还不熟悉模板和样式,所以我不知道答案是在那里还是其他地方。是的。答案不在于小组,而在于小组。您的面板不应该关注滚动条。让ScrollViewer测量并排列面板。因此,视觉树将首先包括ScrollViewer,然后是面板: <Scrol
这是我第一次接触WPF,我还不熟悉模板和样式,所以我不知道答案是在那里还是其他地方。是的。答案不在于小组,而在于小组。您的面板不应该关注滚动条。让ScrollViewer测量并排列面板。因此,视觉树将首先包括ScrollViewer,然后是面板:
<ScrollViewer>
<cc:YourPanel/>
</ScrollViewer>
如果您想要控制ScrollViewer,您可能需要从它继承或自定义它的模板 好的,我找到了!三个简单的步骤:
System.Windows.Controls.Primitives.IScrollInfo
李>
滚动查看器
李>
ScrollViewer
上的CanContentScroll
属性设置为True
瞧 在默认设置中,滚动查看器需要位于模板中的边框周围:
<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>
问题是-我的控件可能无法更改其大小。ScrollViewer基于检查子控件的大小。