Ответ 1
К сожалению, было немного быстро, чтобы опубликовать мой оригинальный ответ. Теперь я вижу, что проблема связана не с типом, а с CommandBinding. Для разрешения имени команды вам необходимо использовать расширение разметки. Обычно я делаю свои команды статичными в своем объявлении следующим образом:
namespace MyApp.Commands
{
public class MyApplicationCommands
{
public static RoutedUICommand MyCustomCommand
= new RoutedUICommand("My custom command",
"MyCustomCommand",
typeof(MyApplicationCommands));
}
}
И в XAML:
<UserControl x:Class="..."
...
xmlns:commands="clr-namespace:MyApp.Commands">
...
<UserControl.CommandBindings>
<CommandBinding Command="{x:Static commands:MyApplicationCommands.MyCustomCommand}"
CanExecute="HelpCanExecute"
Executed="HelpExecuted" />
</UserControl.CommandBindings>
Вам нужно ввести пространство имен содержащего класса с помощью xmlns. Я назвал это "командами" в моем примере выше.
Оригинальное сообщение ниже:
Попробуйте изменить тип команды на RoutedUICommand. Конструктор немного отличается:
public RoutedUICommand MyCustomCommand
= new RoutedUICommand("Description", "Name", typeof(ContainingClass));