Я хочу, чтобы пользовательские настройки Command
s отвечали в моем приложении. Так что я следовал инструкциям на this answer, и создал статический класс для моих команд:Тип ссылки не может найти тип named Команды
namespace MyNamespace {
public static class Commands {
public static readonly RoutedUICommand Create = new RoutedUICommand(
"Create Thing", nameof(Create),
typeof(MyControl)
);
}
}
Затем я попытался использовать его на моем UserControl:
<UserControl x:Class="MyNamespace.MyControl"
...boilerplate...
xmlns:local="clr-namespace:MyNamespace">
<UserControl.CommandBindings>
<CommandBinding Command="local:Commands.Create"
CanExecute="CanCreateThing"
Executed="CreateThing"/>
</UserControl.CommandBindings>
...the control's contents...
</UserControl>
Метод CanCreateThing
всегда устанавливает CanExecute
истина , CreateThing
в настоящее время ничего не делает.
Я получаю эту ошибку на использовании MyControl
в окне XAML:
Type reference cannot find type named '{clr-namespace:MyNamespace;assembly=MyAssembly}Commands'.
И это один в атрибуте Command="..."
в связывании.
Invalid value for property 'Command': 'Microsoft.VisualStudio.DesignTools.Xaml.LanguageService.Semantics.XmlValue'
UPDATE
Mathew избавившись от ошибок, однако, пункты меню с этими командами еще недоступны. Соответствующий код:
<TreeView ...>
<ContextMenu>
<MenuItem Command="{x:Static local:Commands.Create}"/>
</ContextMenu>
...
</TreeView>
MyControl.xaml.cs
//...
private void CanCreateThing(object sender, CanExecuteRoutedEventArgs e) {
e.CanExecute = true;
}
//...
Попробуйте 'Command =" {x: static local: Commands.Create} "' в привязке. –
@Mathew См. Редактирование. – Kroltan
Дважды проверьте, что команда CanExecute команды DeleteItem фактически указывает на метод CanCreateThing. –