2010-02-17 3 views
4

나는 그것을 많이 보았고 그것이 무엇을 의미하는지 모른다. 나는 그것이 네임 스페이스와 관련이 있다고 말하고 싶습니다. 나는 이미 그것을 봤다. 그러나 그것이 목적이 무엇인지는 분명하지 않았다.WPF의 x :은 무엇을 제공합니까?

누구나 설명 할 수 있고 어떤 상황에서 일반적으로 사용됩니까?

감사

편집 :

<Window x:Class="WpfApplication8.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
    </Grid> 
</Window> 

하지만 것을 사용하고 있지만, 예를 들어, 위의 코드에서, 나는 세 번째 줄에있는 XAML 네임 스페이스에 대한 별칭으로 x을 정의하고 동일한 코드 번호 x이 첫 줄에 있습니다. 어떻게 될까요? 사물이 나타나는 순서는 중요하지 않습니까?

EDIT2 : 내가 틀렸다면 이 날 수정 :

창 X : 클래스 = "WpfApplication8.MainWindow"창에서 파생 된 클래스를 넣어 것입니다

위의 코드 은 x : WpfApplication8.MainWindow 네임 스페이스 반면, X

창 : 이름 = "ABC"

은 x 이름 공간에 abc라는 이름의 Window 클래스 인스턴스를 넣습니다. 그게 맞습니까?

맞다면 x 별칭을 사용하지 않았습니까? 클래스 (첫 번째 사례)와 인스턴스 (두 번째) 사례가 어디에 배치 되었습니까? 아무데도 이상한 유형 같은데? 그들은 사용되지만 그들이있는 장소는 정의되지 않았습니까?

+1

편집 내용에 대한 답변을 업데이트했습니다. 도움이 되었기를 바랍니다. – Rory

+1

다시 업데이트되었습니다. XAML 개념에 대한 소개는 http://msdn.microsoft.com/en-us/library/ms747122.aspx를 참조하십시오. – Rory

답변

11

맞아요, XML 네임 스페이스 별칭입니다. xaml 파일의 맨 위에서 살펴보면 http://schemas.microsoft.com/winfx/2006/xaml 네임 스페이스에 매핑된다는 것을 알 수 있습니다. 나중에 접두어를 사용하면 xaml 파서가 전체를 입력 할 필요없이 해당 네임 스페이스에 정의 된 클래스를 찾을 수 있습니다. C#의 using alias = very.long.namespace; 구문과 다르지 않습니다.

일반적으로 xaml 파일에서 사용할 각 네임 스페이스에 대해 다른 별칭을 설정해야합니다. PRISM을 사용하는 일반적인 경우는 cal에서 clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation으로 매핑됩니다. 그런 다음 cal:RegionManager을 사용하여 해당 CLR 네임 스페이스에 정의 된 RegionManager 클래스에 액세스 할 수 있습니다. Expression Blend를 사용할 때 대개 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"이 추가되어 디자인 타임 기능 중 일부 (아트 보드에서 사용자 정의 컨트롤의 너비 및 높이 설정)를 사용할 수 있습니다.


응답 편집 질문 : 당신은 XAML부터이 기능을 상속 곳이다, XML Namespace tutorial에서 살펴 봐야 할 수 있습니다. 당신의 예에서, 당신은 절차 적 코드에서와 같이 개별적인 지시로서 그 라인을 생각하는 것을 멈추고 전체적으로 요소를 고려할 필요가 있습니다.내가 말하고자하는 것은 요소가 Window 요소에 나타나기 때문에 해당 요소와 그 요소에 포함 된 모든 자식 요소에 액세스 할 수 있기 때문에 표시되는 실제 줄은 xaml이 절차 적으로 위에서 아래로 실행되지 않으므로 중요하지 않습니다. 코드입니다. 그건 당신이 창에서 파생 된 클래스를 둘 것이다 "무슨 뜻인지 경우x:Class attribute는 XAML 파일에서 생성 된 부분 클래스의 이름 (해야 어떤 컴파일러를 알려줍니다


응답 편집이 질문하기 ... ", 그 다음 당신은 정확하다).

두 번째 부분에서 벗어났습니다. x:Name attribute은 속성이 첨부 된 요소에 대한 참조를 포함하는 클래스에서 필드를 생성하도록 컴파일러에 지시합니다. 이것이 의미하는 바는, 예제에서 코드 숨김 파일이 this.abc을 사용하여 xaml 마크 업에 정의 된 Window 요소를 참조 할 수 있다는 것입니다.

+0

감사합니다. 그러나 나는 아직도 그것을 완전히 얻지 못한다. 원래 게시물을 수정했습니다. –

+0

그냥 내 마지막 글에서 편집 한 마지막 질문입니다. –

2

네임 스페이스 정의 별칭입니다.

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

그것은 훨씬 짧은 손이나 using/import 문 같은 역할을합니다.

태그 속성 ala x:Name에 네임 스페이스를 정의하면 올바른 공간에서 올바른 속성을 사용하고 있음을 보증 할 수 있습니다.

사용자 지정 WPF 컨트롤을 사용하려는 경우 고유 한 어셈블리 네임 스페이스 별칭을 추가해야합니다.

관련 문제