Xmlns 到项目文件夹中的 Class?

Xmlns to a Class Within a Project Folder?

我需要在我的视图中有一个引用 ViewModel class 的命名空间。我可以引用包含 ViewModels 的文件夹:

 xmlns:vm="clr-namespace:MyApp.ViewModels"

但是我如何才能到达该文件夹中的特定 class?即

xmlns:articlevm="clr-namespace:MyApp.ViewModels.ArticleViewModel"

基本上我想在 HierarchicalDataTemplate 中引用一个类型:

<HierarchicalDataTemplate  DataType="{x:Type articlevm:ArticlesList}"
xmlns:vm="clr-namespace:sometext.ViewModel"

。 . .

<Window.DataContext>
    <vm:MainViewModel />
</Window.DataContext>

请注意,"Project Folders" 只是一个设计时构造,默认 namespace 的构造方式。您实际要查找的是 namespace,而不是项目文件夹。这可能很重要,因为不仅完全有可能将 class 放置在与其所在文件夹不对应的 namespace 中,而且这些文件夹在编译后也不存在。

正如示例所指出的,xmlns 指的是 namespace - 实际上指的是 class 在代码中涉及 ​​ns:Class。将 xmlns 视为类似于 using 指令。

如果你试图引用一个子class(在另一个class中定义的class)你使用+ - 所以如果ArticleListArticleViewModel

中的 class
xmlns:vm="clr-namespace:MyApp.ViewModels"
...
vm:ArticleViewModel+ArticleList

如果您从另一个程序集引用 namespace,则需要将其添加到 xmlns - 因此

xmlns:ns="clr-namespace:MyApp.ViewModels;assembly=MyApp"