视图中出现XamlParseException

本文关键字:XamlParseException 视图 | 更新日期: 2023-09-27 18:20:17

我有一个只显示Label的视图。

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

{System.Windows.Markup.XamlParseException:找不到类型"DataGrid"。[行:16位置:45]su System.Windows.Application.LoadComponent(对象组件,Uri资源定位器)su Common.Views.FunctionalityView.InitializeComponent()su Common.Views.FunctionalityView..ctor(IFunctionalityViewModel viewModel)}

但如果我在InitializeComponent();之前定义了一个DataGrid myDg = new DataGrid(),它就起作用了。

我已经检查了所有的参考资料,仍然找不到问题。

视图中出现XamlParseException

听起来您的默认名称空间混乱或丢失了。没有xaml,很难判断你应该做什么。

自己解决这个问题的一个简单方法是创建一个新的UserControl,然后检查并比较在其根上定义的xmlns命名空间与View的根元素。

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

clr名称空间:[名称空间](;assembly=[程序集名称])

其中

[名称空间]

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

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

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

xmlns="http://schemas.microsoft.com/winfx/2006-xaml/presentation"

相关文章:
  • 没有找到相关文章