WPF中的水平滚动按钮

时间:2011-06-30 06:08:17

标签: wpf button wpf-controls scroll styling

我有一个包含按钮的水平堆栈面板。

我需要能够向右或向左滚动以使按钮在堆叠面板中旋转,因为屏幕上有多个按钮而不是空间。

使用水平滚动条不是一个选项,因为它会破坏应用程序的外观并且不会以循环方式一直旋转。

  • 如何更改滚动条以使右侧的箭头和左侧的左箭头处理滚动而不是完全旋转所有按钮。即,像普通滚动条一样工作,但看起来更好。 例如。 << [Btn] [Btn] [Btn]>>

  • 或者有一种方式或以圆形方式旋转按钮,这样就没有真正的开始或结束按钮的水平集合,以及某种方式让用户移动他们可以看到的按钮的位置。 / p>

容器控件不必是堆栈面板,这只是最初按钮的最佳容器。

Xmal和造型将是我的第一选择,但使用背后的代码也没有问题。

2 个答案:

答案 0 :(得分:0)

我在[这里] [1]问了一个类似的问题,希望有所帮助。

[1]:Custom listbox with move fwd/bwd buttons

答案 1 :(得分:0)

制作自己的自定义滚动按钮是一个问题吗?  如果没有,您可以按照将ItemsPanel设置为

的样式创建ItemsControl
    <ItemsPanelTemplate x:Key="ItemsPanelStyle">
        <StackPanel Orientation="Horizontal"></StackPanel>
     </ItemsPanelTemplate>

和ItemsControl的ControlTemplate

<ScrollViewer
    x:Name="PART_ScrollViewer"
    HorizontalScrollBarVisibility="Hidden"
    VerticalScrollBarVisibility="Hidden"
    CanContentScroll="True"
    >
        <ItemsPresenter/>
    </ScrollViewer>

您的工具栏按钮将是此ItemsControl的实际ItemsSource。如果您现在在模板中创建一个按钮(向右滚动,您需要滚动按钮),并在其上执行命令

ScrollViewer myViewer = GetTemplatedPart("PART_ScrollViewer");
if(myViewer != null)
{
    myViewer.LineRight();
}

这应该向右滚动每个元素,直到按钮列表的末尾(注意优点:无论元素的宽度是多少)。  你可以在左边做同样的事情。

HTH,daniell