关键绑定WPF与Caliburn Micro

时间:2018-02-19 10:27:11

标签: wpf visibility key-bindings

我有一个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"

这仍然没有按照建议运作。

2 个答案:

答案 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个类。

现在一切都很完美!