【问题标题】:Show shortcut key hint on a button just like ribbon/menu when Alt key is pressed按下 Alt 键时在按钮上显示快捷键提示,就像功能区/菜单一样
【发布时间】:2014-07-17 16:18:25
【问题描述】:

我正在开发 WPF 应用程序,其中一项要求是在按下 Alt 键时在按钮上显示快捷键提示。当您按下 Alt 键时,它需要像功能区/菜单一样工作,它会显示提示。我正在使用 MVVM,它需要在多个地方实现,而不仅仅是一个按钮,所以需要一个通用的解决方案(可能是行为或其他东西)。

有没有办法实现这个?任何帮助将不胜感激。

【问题讨论】:

  • 我很确定您可以立即使用它,不是吗?
  • 不,您可以设置 accesstext 或使用 _ButtonText,但没有什么像功能区那样在角落看到提示。
  • 很公平,那我就更正了。
  • 是的,有一种方法可以实现这一点。创建一个新的按钮类型,在模板中包含提示并监听按下的 alt 键。当你开始并被卡住时回来。
  • 你也可以写一个通过行为使用的装饰器。通过这种方式,您可以将行为附加到任何按钮。

标签: c# wpf mvvm access-keys


【解决方案1】:

不知道你的容器元素功能区或菜单是什么(应该适用于任何一个),例如让我们说它的简单网格。 以下是基本准则:

1) 在您的 ViewModel 中创建一个名为 HintVisible 的 bool 类型的道具。

2) 您的包含元素(网格)将包含提示元素(例如按钮),这些元素在需要提示时可见。他们的 Visibility 属性应该绑定到 VM 的 HintVisible 属性

<Button Visibility=”{Binding HintVisible , Converter={StaticResource BoolToVisibilityConverter} }”>Hint</Button>

3) 你的包含元素应该有

<Grid>
<Grid.InputBindings>
    <KeyBinding Command="{Binding ToggleHintCommand}" Key="LeftAlt"/>
</Grid.InputBindings>
<!-- Elements-->
</Grid>

4) 你的虚拟机的 ToggleHintCommand 应该切换 HintVisible 属性

【讨论】:

  • 我认为你没有理解这个问题。您建议的是一种显示/隐藏提示的方法,但是当按下 Alt 键时,您将如何像功能区一样在按钮上绘制提示?
  • 什么是并发症?最简单的方式 - 您的功能区位于网格中,您只需将按钮放在功能区(在可视树中)并使用例如边距道具将它们定位在功能区的右侧选项卡上。对于更复杂的行为,您始终可以使用绑定(灵活地适应位置变化和调整大小)
  • 更高级的方式 - 我从未使用过 Ribbon,但它的 wpf ......所以你应该能够 DataTemplate 它的选项卡标题,所以只需使用我之前提到的方法将提示放在那里
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多