WPF命令绑定无法正常工作

时间:2018-05-08 12:44:51

标签: wpf vb.net routed-commands

我想在我的WPF项目中执行command binding

1)我创建了以下模块

Namespace Test
    Module CustomCommands
        Public ReadOnly Export As RoutedUICommand = New RoutedUICommand(
            "Export",
            "Export",
            GetType(CustomCommands),
            New InputGestureCollection(New KeyGesture(Key.F7, ModifierKeys.Alt))
        )
    End Module
End Namespace

2)在我的主窗口中,我创建了一个CommandBinding:

<Window.CommandBindings>
        <CommandBinding Command="local:CustomCommands.Export" CanExecute="ExportCommand_CanExecute" Executed="ExportCommand_Executed"></CommandBinding>
    </Window.CommandBindings>

3)在我的主窗口的一个按钮中,我添加了绑定:

Button Command="CustomCommands.Export">Exit</Button>

我的问题出在第2点Visual Studio告诉我: 名称&#34; CustomCommands&#34;命名空间中不存在&#34; clr-namespace:Test&#34; 即使我的主窗口是此命名空间的一部分:

<Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Test"
<...></...>
</Window>

我做错了什么?

我在这里遵循了几个建议,从Debug切换到Release或从x86切换到x64并重新编译,但没有一个解决我的问题。

更新 感谢mm8的回答,我从模块Namespace Test中删除了CustomCommands并进行了重建。现在它可以正常工作。

1 个答案:

答案 0 :(得分:1)

Test添加到名称空间声明中的默认命名空间:

xmlns:local="clr-namespace:Test.Test"

...并将List(Of KeyGesture)传递给您在模块中创建的InputGestureCollection

Namespace Test 
    Public Module CustomCommands
        Public ReadOnly Export As RoutedUICommand = New RoutedUICommand(
            "Export",
            "Export",
            GetType(CustomCommands),
            New InputGestureCollection(New List(Of KeyGesture) From {New KeyGesture(Key.F7, ModifierKeys.Alt)})
        )
    End Module
End Namespace