我想在我的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
并进行了重建。现在它可以正常工作。
答案 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