2009-03-10 4 views

답변

51

xmlns는 XML 요소 이름을 확인하기위한 네임 스페이스를 정의하는 XAML이 아닌 XML입니다. 한정자없이 정의 되었기 때문에 XML 요소 이름을 분석해야하는 기본 네임 스페이스를 정의합니다.

XAML에서 일반적으로 다음 항목이 표시됩니다. 기본적으로 기본 네임 스페이스를 WPF로 정의하므로 모든 XML 요소 이름이 WPF 요소로 해석됩니다.

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

다음과 같은 기본이 아닌 네임 스페이스를 보는 것도 일반적입니다.

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

XAML 특정 요소에 대한 정규화 된 네임 스페이스를 정의합니다. 이 네임 스페이스 내에서 요소 또는 속성 이름을 확인하려면 x로 한정해야합니다. 예 :

<StackPanel x:Name="foo" /> 

이 정의에는 2 가지 이름의 해결책이 있습니다.

  1. StackPanel의 - 그것이 규정되지 않은 이름이기 때문에, 그것은
  2. WPF
  3. 입니다 기본 네임 스페이스에서 해결 될 것 X : 이름 - 이름은 X와 자격과 XAML 문서 내에서 해결 될 것입니다.
+0

매우 유익한 감사 :) – AnkitSablok

6

취한 곳 MSDN 루트 요소에는 xmlns 및 xmlns : x 속성이 포함되어 있습니다. 이러한 특성은 XML 네임 스페이스에 마크 업이 참조 할 요소에 대한 요소 정의가 포함되어 있음을 XAML 프로세서에 나타냅니다. xmlns 속성은 기본 XML 네임 스페이스를 구체적으로 나타냅니다.

사용 및 매핑 범위를 정의하는 xmlns의이 사용법은 XML 1.0 사양과 일치합니다.

희망이 도움이됩니다.

21

그리고 xmlns를 사용하여 XAML 내에서 자신의 네임 스페이스에 대한 참조를 가져옵니다.

xmlns:local="clr-namespace:MyWpfProject" 

가 지금은 (IValueConverters 및 DataTemplateSelectors 같은) 내 프로젝트 내에서 만들 수있는 모든 클래스에 대한 액세스 권한에 의해 : 새 WPF 프로젝트를 만들 때 내가 할 첫 번째 것들 중 하나는 프로젝트 네임 스페이스에 대한 참조를 추가하는 것입니다 "local :"접두사 사용

<local:BooleanToColorConverter x:Key="booleanToColorConverter" DefaultBrush="Green" HighlightBrush="Red" /> 

물론 "local"을 사용할 필요가 없습니다. 원하는대로 이름을 지정할 수 있습니다. 그리고 같은 방식으로 필요한 네임 스페이스에 참조를 추가 할 수 있습니다.

9

어셈블리에 XmlnsDefinitionAttribute을 추가하여 여러 CLR 네임 스페이스를 하나의 XML 네임 스페이스로 매핑 할 수도 있습니다. 이것은 System 아래에 많은 네임 스페이스를 매핑하여 WPF 팀이 한 것입니다.이 같은 윈도우 :이 구문이 XAML을 간단하게,하지만 조심 수

[XmlnsDefinitionAttribute(
    "http://schemas.microsoft.com/winfx/2006/xaml/presentation", 
    "System.Windows.Controls")] 
[XmlnsDefinitionAttribute(
    "http://schemas.microsoft.com/winfx/2006/xaml/presentation", 
    "System.Windows.Ink")] 

는 함께 병합 CLR 네임 스페이스에 같은 이름의 수업을합니다.