【问题标题】:How to handle InputBinding Commands and ToggleButtons?如何处理 InputBinding 命令和切换按钮?
【发布时间】:2012-04-12 06:47:50
【问题描述】:

我有一个 InputBinding,目的是让 F6 用作激活编辑模式的快捷方式,如下所示:

<Window.InputBindings>
    <KeyBinding Gesture="F6" Command="{Binding Path=ActivateEdit}"/>
</Window.InputBindings>

按钮本身如下所示:

<ToggleButton Height="26" Width="26" Margin="0,0,1,1" Padding="1" 
                            ToolTip ="Bearbeiten (F6)" 
                            Command="{Binding ActivateEdit}"               
                            IsChecked="{Binding IsEditPressed, Converter={StaticResource boolToNullableBoolConverter}}"
                            IsTabStop="False" BorderThickness="0" BorderBrush="{x:Null}" Focusable="False">
    <Image Source="/Images/Edit.ico" Stretch="Fill" Height="16" Width="16"/>
</ToggleButton>

如果手动按下按钮,则会触发命令。此外,如果用户按 F6。但在这种情况下,按钮不会获​​得 IsChecked 状态。如何在不为 KeyBinding 编写不同命令的情况下完成此操作?

【问题讨论】:

  • 你真的需要 IsChecked 的转换器吗?
  • 猜猜在这种情况下它不是真的必要,是的。可能我是 NULL 综合症恐惧症的受害者。

标签: wpf command togglebutton inputbinding


【解决方案1】:

让您的命令“切换”IsEditPressed 属性,理想情况下,这将是唯一需要做的事情,这样可以更轻松地保持所有内容同步。然后,您甚至不需要 ToggleButton 本身的命令,因为 IsChecked 绑定就足够了。

【讨论】:

  • 当按钮被点击时,你肯定仍然需要 ToggleButton 上的 Command 绑定来调用命令吗?
  • 确实...... ToggleButton 上必须有一个命令,对吧?否则:按下按钮将如何执行该命令?
  • 啊,我明白了,H.B.!我可以将代码放在 IsEditPressed 的 Set 部分中实际执行命令,并且在命令本身中只需将 IsEditPressed 切换为 true 或 false。 - 效果很好!感谢您的提示!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 2013-06-23
  • 2016-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多