Привязка команды WPF не работает - PullRequest
0 голосов
/ 08 мая 2018

Я хочу сделать command binding в моем проекте WPF:

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 говорит мне: Имя "CustomCommands" не существует в пространстве имен "clr-namespace: Test" хотя мое главное окно является частью этого пространства имен:

<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 и перекомпилировать, но ни один из них не помог мне решить мою проблему.

UPDATE Благодаря ответу mm8 я удалил Namespace Test из модуля CustomCommands и сделал перестройку. Теперь работает без ошибок.

1 Ответ

0 голосов
/ 08 мая 2018

Добавьте 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
...