2

问完这个问题后,我意识到也许我应该问一个更笼统的问题。所以,这里是:

在 WPF 中,我正在创建一个自定义面板派生控件。对于该控件,我想添加水平和垂直滚动条并自己控制它们(获取并设置 min/max/value/pagesize)。我怎样才能做到这一点?

这是我第一次接触WPF,我对模板和样式还不熟悉,所以我不知道答案是在那里还是其他地方。

4

3 回答 3

2

好的,我找到了!三个简单的步骤:

  1. System.Windows.Controls.Primitives.IScrollInfo在您的自定义控件上实施;
  2. 将您的自定义控件添加到ScrollViewer;
  3. CanContentScroll属性设置ScrollViewerTrue

瞧!

于 2009-08-31T14:21:37.720 回答
1

是的。答案不在 Panel 中,而在ScrollViewer中。您的面板不应该关心滚动条。让 ScrollViewer 测量和排列您的面板。因此,您的视觉树将首先包含 ScrollViewer,然后是您的面板:

    <ScrollViewer> 
      <cc:YourPanel/>
    </ScrollViewer>

如果你想控制 ScrollViewer,你可能想要继承它或者自定义它的模板。

于 2009-08-31T13:57:20.033 回答
0

The Scroll Viewer needs to be in the template, around the border in the default setup:

<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>
于 2019-01-17T17:01:47.487 回答