WPF 命令绑定不起作用
WPF command binding not working
我想在我的 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) 在我的主 window 中,我创建了一个 CommandBinding:
<Window.CommandBindings>
<CommandBinding Command="local:CustomCommands.Export" CanExecute="ExportCommand_CanExecute" Executed="ExportCommand_Executed"></CommandBinding>
</Window.CommandBindings>
3) 在我的主要 window 中的一个按钮中,我添加了绑定:
Button Command="CustomCommands.Export">Exit</Button>
我的问题在第 2 点 Visual Studio 告诉我:
名字空间 "CustomCommands" 不存在于命名空间 "clr-namespace:Test"
即使我的主要 window 是此命名空间的一部分:
<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>
我做错了什么?
我按照这里的几个建议从调试切换到发布或从 x86 切换到 x64 并重新编译,但其中 none 解决了我的问题。
更新
感谢 mm8 的回答,我从模块 CustomCommands
中删除了 Namespace Test
并进行了重建。现在它可以正常工作了。
将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
我想在我的 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) 在我的主 window 中,我创建了一个 CommandBinding:
<Window.CommandBindings>
<CommandBinding Command="local:CustomCommands.Export" CanExecute="ExportCommand_CanExecute" Executed="ExportCommand_Executed"></CommandBinding>
</Window.CommandBindings>
3) 在我的主要 window 中的一个按钮中,我添加了绑定:
Button Command="CustomCommands.Export">Exit</Button>
我的问题在第 2 点 Visual Studio 告诉我: 名字空间 "CustomCommands" 不存在于命名空间 "clr-namespace:Test" 即使我的主要 window 是此命名空间的一部分:
<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>
我做错了什么?
我按照这里的几个建议从调试切换到发布或从 x86 切换到 x64 并重新编译,但其中 none 解决了我的问题。
更新
感谢 mm8 的回答,我从模块 CustomCommands
中删除了 Namespace Test
并进行了重建。现在它可以正常工作了。
将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