2011-06-30 47 views
2

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

我需要能够滚动这个向右或向左的按钮旋转通过堆叠面板,因为有更多的按钮比屏幕上有空间。

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

  • 我无论怎样才能改变滚动条只需在右手侧的右箭头,并在左手侧的左箭头来处理滚动并没有完全旋转,所有按钮。即像普通的滚动条一样工作,但看起来更好。 例如。 < < [BTN] [BTN] [BTN] >>

  • 或者有一种方法或旋转的按钮以圆形方式,因此没有真正开始或结束按钮的水平收集和某种方式为用户移动他们可以看到的按钮的位置。

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

Xmal和样式将是我的第一选择,但是使用后面的代码没有问题。

回答

0

制作自己的自定义滚动按钮是一个问题? 如果没有,你可以创建一个ItemsControl的,在设置ItemsPanel的风格

<ItemsPanelTemplate x:Key="ItemsPanelStyle"> 
     <StackPanel Orientation="Horizontal"></StackPanel> 
    </ItemsPanelTemplate> 

和ItemsControl中的

<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