【问题标题】:Horizontal Scrolling buttons in WPF [duplicate]WPF中的水平滚动按钮[重复]
【发布时间】:2011-06-30 06:08:16
【问题描述】:
我有一个包含按钮的水平堆栈面板。
我需要能够左右滚动以使按钮在堆栈面板中旋转,因为按钮数量多于屏幕上的空间。
使用水平滚动条不是一种选择,因为它会破坏应用程序的外观并且不会以圆形方式一直旋转。
容器控件不必是堆栈面板,它最初只是按钮的最佳容器。
Xmal 和样式是我的首选,但使用后面的代码也没有问题。
【问题讨论】:
标签:
wpf
button
wpf-controls
scroll
styling
【解决方案1】:
制作自己的自定义滚动按钮有问题吗?
如果没有,你可以创建一个ItemsControl,在样式中将ItemsPanel设置为
<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,丹尼尔