是否有任何 WPF 控件可以处理在窗口中导航剪辑的菜单或用户界面?

Posted

技术标签:

【中文标题】是否有任何 WPF 控件可以处理在窗口中导航剪辑的菜单或用户界面?【英文标题】:Are there any controls for WPF that handle navigating a clipped menu or user interface in a window? 【发布时间】:2014-03-29 16:56:26 【问题描述】:

考虑以下几点:

我的应用程序有一个主菜单,它包裹在 StackPanel 中,水平方向,左对齐。 我的菜单中有很多按钮或其他控件用于我的应用程序的功能。 屏幕分辨率较低的用户可能会使用我的应用程序。 在较低的屏幕分辨率上,顶部菜单可能会被截断,因为它是左对齐的。 当您将窗口大小调整为小到足以切断部分菜单时,也可能发生这种情况。

我可以做些什么来缓解这个问题?理想情况下,我想使用一个控件来动态创建左或右按钮(动态地,当它环绕的项目被切断时,它会创建这些按钮)单击时向左或向右滚动一定量。

我不想使用 WrapPanel,因为垂直空间有限。 我不能使用水平滚动条,因为我的经理认为它看起来太丑了。 如果我或使用我的应用程序的其他人在互联网连接速度较慢的机器上(如拨号)使用远程桌面,则在剪裁边缘附近悬停时,我无法使用某种悬停和滚动技术向上。

理想情况下,我正在寻找标准的 WPF 控件,但我也对第三方控件(例如我的应用程序也使用的 Telerik)开放。

【问题讨论】:

【参考方案1】:

ScrollViewer 对于您的场景来说仍然是一个不错的选择——您所要做的就是修改它的control template。由于您不希望滚动条可见,您可以:

完全移除滚动条并将其替换为按菜单项大小递增/递减 ScrollViewer 的 HorizontalOffset 的按钮。 移除垂直滚动条,并用重新设计的版本替换水平滚动条——您可以修改ScrollBar's control template 以移除难看的轨迹条(您可以在链接中找到这些名为“PART_Track”的轨迹条),并且保留递增/递减按钮。

上述方法的替代方法是创建自己的panel,例如,使用“Offset”属性确定布局的水平滚动。然后添加两个增加/减少偏移量的按钮,它们的可见性绑定到面板上单独的“CanScrollForward”/“CanScrollBack”属性。

【讨论】:

以上是关于是否有任何 WPF 控件可以处理在窗口中导航剪辑的菜单或用户界面?的主要内容,如果未能解决你的问题,请参考以下文章

在默认 AppDomain 中的 Winforms 中托管 WPF 用户控件的弹出窗口中的选项卡导航损坏

在 WPF Frame 控件中关闭导航页面声音

用于 WPF 导航的窗口、页面和用户控件?

从用户控件中导航WPF选项卡控件?

WPF文本框,无法编辑文本......即将放弃

是否有任何工具可以为 wpf(xaml)中的复杂控件创建实时样式 [关闭]