我有一个TabControl
的窗口。我设置了TabItem
:
Visibility="{Binding IsVisible}
我还将此添加到窗口的XAML中:
<Window.InputBindings>
<KeyBinding Modifiers="Ctrl"
Key="H"
Command="{Binding ToggleHiddenTab}" />
</Window.InputBindings>
我将此方法添加到ViewModel。
public void ToggleHiddenTab()
{
if (IsVisible == Visibility.Visible)
{
IsVisible = Visibility.Hidden;
NotifyOfPropertyChange(() => IsVisible);
}
else
{
IsVisible = Visibility.Visible;
NotifyOfPropertyChange(() => IsVisible);
}
}
完整的财产:
private Visibility _isVisible;
public Visibility IsVisible
{
get { return _isVisible; }
set {
_isVisible = value;
NotifyOfPropertyChange(() => IsVisible);
}
}
当我按 CTRL + h 时没有任何反应。为了测试功能,我添加了一个测试按钮:
<Button x:Name="ToggleHiddenTab" Content="Test Visible"
Grid.Column="0" Margin="20,8,20,8">
<Button.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="5"/>
</Style>
</Button.Resources>
</Button>
单击按钮时,隐藏选项卡会更改其可见性。为什么不接受 ctrl + h 键?
--------------------- EDIT ------------------------- ------------------ 根据以下答案,我补充道:
cal:Message.Attach="[Gesture Ctrl+H] = [ToggleHiddenTab]"
然后编辑通过&#34;命名空间undefined&#34; &#34; cal:&#34;的错误,快速谷歌搜索建议添加到窗口标记:
xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro.Platform"
这仍然没有按照建议运作。
答案 0 :(得分:2)
ToggleHiddenTab
不是命令,它是一种方法。
但您应该能够使用cal:Message.Attach
附加属性来挂接键绑定:
<Window ... cal:Message.Attach="[Gesture Ctrl+H] = [ToggleHiddenTab]">
答案 1 :(得分:1)
所以我终于开始工作了。我忘记了Caliburn.Micro的GitHub页面中的所有示例。
即这一个: https://github.com/Caliburn-Micro/Caliburn.Micro/tree/master/samples/scenarios/Scenario.KeyBinding
我不得不对AppBootstrapper Configure()进行更改,并为项目添加另外4个类。
现在一切都很完美!