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”