View中的XamlParseException

我有一个只显示标签的视图。

视图模型在视图中正确注入,因为标签的文本绑定到viewmodel属性。 现在,如果我尝试在xaml中定义DataGrid,我有一个XamlParseException:

{System.Windows.Markup.XamlParseException:未找到类型’DataGrid’。 [行:16位置:45] su System.Windows.Application.LoadComponent(Object component,Uri resourceLocator)su Common.Views.FunctionalityView.InitializeComponent()su Common.Views.FunctionalityView..ctor(IFunctionalityViewModel viewModel)}

但是如果我在InitializeComponent();之前定义一个DataGrid myDg = new DataGrid() InitializeComponent(); 有用。

我检查了所有参考文献,仍然无法找到问题。

听起来你的默认命名空间搞砸了或丢失了。 没有xaml,很难说你应该做什么。

一个简单的方法就是创建一个新的UserControl,然后检查并比较其根目录上定义的xmlns名称空间和View的根元素。

WPF通过专门的命名空间定义来定位类型。 它遵循格式

clr-namespace:[namespace](; assembly = [程序集名称])

哪里

[命名空间]

是包含类型定义的命名空间。 并且,如果类型是在与xaml文件所在的程序集不同的程序集中定义的,则必须在前言中包含该部分。 [assembly name]是没有.dll扩展名的程序集的名称(例如, assembly=mscorlib将导入mscorlib.dll )。 要导入Int32类型并在xaml中使用它,您必须定义命名空间

 xmlns:s="clr-namespace:System;assembly=mscorlib" 

还存在一个程序集级属性 ,允许您为程序集中的所有类型分配不同的命名空间。 通常,这采用URL的forms。 这是传统而非必要,IIRC。 这就是为什么某些控件用更传统的命名空间标识的原因,例如

的xmlns = “http://schemas.microsoft.com/winfx/2006/xaml/presentation”