You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C# WPF命名空间报错:MainViewModel及转换器无法识别

解决MahApp汉堡菜单接入时的XAML命名空间报错问题

刚处理过类似的XAML设计时错误,给你几个具体的排查步骤,应该能搞定:

  • 检查命名空间匹配度
    先确认你的MainViewModelSelectedItemToContentConverter实际所在的命名空间。比如如果MainViewModelHermes.ViewModel子命名空间下,那XAML里的xmlns:local应该指向这个子空间,而不是根Hermes。比如要写成:

    xmlns:local="clr-namespace:Hermes.ViewModel"
    

    而不是只写clr-namespace:Hermes,否则XAML找不到嵌套子空间里的类。

  • 确保类是public修饰的
    很多时候这个错误是因为类的访问级别不够。如果你的MainViewModel或者转换器是internal的,Blend的设计实例(d:DesignInstance)在设计时无法访问到这些类,就会报“不存在”的错误。把这两个类的修饰符改成public再试试。

  • 先编译整个解决方案
    XAML的智能感知经常会滞后,尤其是刚添加完类或者修改了命名空间之后。先Build一下你的项目,很多时候编译完成后,这些“找不到”的错误会自动消失。

  • 调整d:DesignInstance的参数
    如果你的MainViewModel没有无参构造函数,设计时实例化会失败,也会触发这个错误。可以给d:DesignInstance加上IsDesignTimeCreatable="True"(前提是类有public无参构造),或者设为False让设计器只识别类型而不实例化:

    d:DataContext = "{d:DesignInstance local:MainViewModel, IsDesignTimeCreatable=False}"
    
  • 排查转换器的实现
    针对SelectedItemToContentConverter,还要确认它是否正确继承了IValueConverter接口,并且实现了ConvertConvertBack方法。如果接口没实现或者方法缺失,也可能导致设计器识别不到这个类。

内容的提问来源于stack exchange,提问作者Danki

火山引擎 最新活动