2012-01-13 9 views
0

레이블 만 표시하는 뷰가 있습니다.XamlParseException보기

레이블의 텍스트가 viewmodel 속성에 바인딩되어 있기 때문에 viewmodel이보기에 올바르게 삽입되었습니다. 내가 XAML에서 DataGrid를 정의하려고하면 지금, 내가 XamlParseException있어 :

{System.Windows.Markup.XamlParseException : 유형 '데이터 그리드'를 찾을 수 없습니다. [줄 : 16 위치 : 45] su System.Windows.Application.LoadComponent (개체 구성 요소, 리소스 리오리에이터) su. Common.Views.FunctionalityView.InitializeComponent() su. Common.Views.FunctionalityView..ctor (IFunctionalityViewModel viewModel)}

그러나 정확히 InitializeComponent(); 앞에 DataGrid myDg = new DataGrid()을 정의하면됩니다.

모든 참조를 확인했지만 여전히 문제를 찾을 수 없습니다.

+0

같은 전통적인 네임 스페이스로 식별되는 이유입니다 수있는 당신 [ 편집] * 실제 텍스트를 추가하려면 *? 귀하의 의역은 무슨 일이 일어나고 있는지 이해하기 어렵게 만듭니다. 또한 내부 예외도 확인하십시오. – Will

+0

FunctionalityView 생성자, InitializeComponent()에서 예외가 발생합니다. –

+0

K, 기본 네임 스페이스가 엉망입니다. 새 UserControl을 만들고 UserControl의 모든 xmlns 정의를 살펴보십시오. 보기의 항목과 비교하십시오. 필요하면 수정하십시오. – Will

답변

1

기본 네임 스페이스가 엉망이거나 누락 된 것처럼 들립니다. xaml이 없으면, 당신이해야 할 일을 말하기 어렵습니다.

이 방법을 쉽게 이해할 수있는 방법은 새 UserControl을 만든 다음 해당 루트에 정의 된 xmlns 네임 스페이스를 확인하고 뷰의 루트 요소와 비교하는 것입니다.

WPF는 특수한 네임 스페이스 정의로 형식을 찾습니다.

[공간]

가 (어셈블리 = 어셈블리 이름])

이다 네임 스페이스] 이것은

는 CLR 네임 스페이스 포맷을 이하 형식 정의를 포함하는 네임 스페이스 그리고 형식이 xaml 파일이있는 어셈블리와 다른 어셈블리 내에 정의되어 있으면 서문에 파트를 포함시켜야합니다. [assembly name]은 .dll 확장자가없는 어셈블리의 이름입니다 (예 : assembly=mscorlibmscorlib.dll 임). INT32 유형을 가져오고 XAML에서 사용하려면

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

는 또한 어셈블리 내 에 대한 모든 종류의 다른 네임 스페이스를 할당 할 수 assembly-level attribute가 존재하는 네임 스페이스를 정의해야합니다. 일반적으로 URL 형식입니다. 이것은 필요에 의한 것이 라기보다는 전통에 의한 것입니다. IIRC. 일부 컨트롤이 같은

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

+0

고맙습니다. 내 xmlns : sdk = "http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"을 확인했습니다. " "xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation "'이제는 작동합니다. –

+0

@TomJerry : [안녕하세요, 도와 드리겠습니다.] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer -작업) – Will