XamlParseException в представлении - PullRequest
0 голосов
/ 13 января 2012

У меня есть представление, которое показывает только метку.

Видовая модель правильно вставлена ​​в представление, поскольку текст метки привязан к свойству viewmodel.Теперь, если я пытаюсь определить DataGrid в xaml, у меня появляется исключение XamlParseException:

{System.Windows.Markup.XamlParseException: Тип «DataGrid» не найден.[Строка: 16 Позиция: 45] su System.Windows.Application.LoadComponent (объектный компонент, Uri resourceLocator) su Common.Views.FunctionalityView.InitializeComponent () su Common.Views.FunctionalityView..ctor (IFunctionalityViewModel viewModel)}

НО, если я определю DataGrid myDg = new DataGrid() прямо перед InitializeComponent();, он будет работать.

Я проверил все ссылки и все еще не могу найти проблему.

1 Ответ

1 голос
/ 16 января 2012

Похоже, ваше пространство имен по умолчанию испорчено или отсутствует. Без 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. По традиции, а не по необходимости, IIRC. Вот почему некоторые элементы управления отождествляются с более традиционным пространством имен, таким как

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

...