WPF 中的水平滚动按钮

发布于 2024-11-17 20:25:03 字数 424 浏览 2 评论 0原文

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

我需要能够向右或向左滚动,以使按钮在堆栈面板中旋转,因为按钮的数量多于屏幕上的空间。

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

  • 如何将滚动条更改为右侧只有一个右箭头,左侧有一个左箭头来处理滚动,而不是完全旋转所有按钮。即,其工作方式与普通滚动条类似,但看起来更好。 例如。 << [Btn][Btn][Btn] >>

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

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

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

I have a horizontal stack panel that contains buttons.

I need to be able to scroll this either right or left to make the buttons rotate through the stack panel because there are more buttons than there is room on the screen.

Using a horizontal scroll bar is not an option because it ruins the look of the application and does not rotate all the way around in a circular fashion.

  • How can I either change the scroll bar to just have a right arrow on the right hand side and a left arrow on the left hand side to handle the scrolling and not completely rotate all the buttons. ie, works like a normal scroll bar but looks way better.
    eg. << [Btn][Btn][Btn] >>

  • Or have a way or rotating the buttons in a circular fashion so the is no real start or end the the horizontal collection of buttons and some way for a user to move the position of the buttons they can see.

The container control does not to have to be a stack panel, that was just the best container for the buttons initially.

Xmal and styling would be my first choice, but there is no issue using code behind either.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

愚人国度 2024-11-24 20:25:03

制作自己的自定义滚动按钮是一个问题吗?
如果没有,您可以创建一个 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,丹尼尔

Making your own custom scroll buttons is a issue?
If not, you can create a ItemsControl, in the style set the ItemsPanel to

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

and in the ControlTemplate of the ItemsControl

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

your toolbar buttons will be the actual ItemsSource of this ItemsControl. If you create now a button in the template (scroll right, the scroll button you need), and on it's command you execute

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

this should scroll each element to the right untill the end of your list of buttons (notice advantage: no matter what the width of the element is).
The same thing you can do to the left.

HTH, daniell

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文