WPF创建自定义CommandBinding提示CustomCommands不存在报错求助
解决方案
- 首先确认XAML命名空间映射正确
检查Window根节点的命名空间声明,确保local前缀指向CustomCommands类所在的实际命名空间。如果CustomCommands放在项目子目录(比如Commands文件夹),命名空间会自动追加子目录名,需要对应修改映射:<!-- 假设CustomCommands在CommandBindingWPF.Commands命名空间下 --> xmlns:commands="clr-namespace:CommandBindingWPF.Commands" <!-- 引用时修改为 --> <CommandBinding Command="commands:CustomCommands.Exit" CanExecute="ExitCommand_CanExecute" Executed="ExitCommand_Executed" /> - 确认
CustomCommands是顶级公共类
不要把CustomCommands嵌套在MainWindow或者其他类内部,如果是嵌套类,XAML引用语法需要改为local:MainWindow+CustomCommands.Exit,更推荐将自定义命令类作为独立的顶级类定义。 - 清理VS缓存解决设计器误报
XAML设计器经常出现缓存导致的假报错,按以下步骤操作即可解决:- 右键解决方案选择「清理解决方案」
- 关闭Visual Studio,删除项目根目录下的
.vs文件夹、以及每个项目的bin、obj文件夹 - 重新打开VS,右键解决方案选择「重新生成解决方案」
- 核对项目生成配置
如果你的项目生成平台设置为x64/ARM等非Any CPU平台,VS自带的32位XAML设计器会无法加载程序集导致找不到类,将生成平台改为「Any CPU」并勾选「首选32位」后重新生成即可。
你可以先在后台C#代码中任意位置加一行var testCmd = CustomCommands.Exit;验证类定义是否正常:如果后台代码可以正常编译,说明问题100%是XAML设计器缓存导致,直接执行清理缓存步骤即可。
内容的提问来源于stack exchange,提问作者Alive318
相关产品推荐
相关产品推荐

