2009-03-10 9 views

答えて

51

xmlnsは、xml要素名を解決するための名前空間を定義するXMLであり、必ずしもXAMLではありません。修飾子なしで定義されているため、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つの名前解決があります。それは非修飾名ですので、それはWPF

  • xはデフォルトの名前空間で解決される予定 -

    1. のStackPanelの名前 - 名前は、xで修飾され、XAMLドキュメント内で解決されます。
  • +0

    非常に有益なおかげで:) – AnkitSablok

    6

    から取られたMSDN ルート要素には、属性xmlnsおよびxmlns:xも含まれています。これらの属性は、マークアップが参照する要素の要素定義を含むXML名前空間をXAMLプロセッサに示します。 xmlns属性は、デフォルトのXML名前空間を具体的に示します。

    xmlnsを使用して、使用とマッピングのスコープを定義するこの使用法は、XML 1.0仕様と一貫しています。

    これが役に立ちます。

    21

    xmlnsを使用して、XAML内の独自の名前空間への参照を取得します。新しいWPFプロジェクトを作成するときに私は最初のものの一つは、プロジェクトの名前空間への参照を追加することです:

    xmlns:local="clr-namespace:MyWpfProject" 
    

    今私は(IValueConvertersとDataTemplateSelectorsなど)私は私のプロジェクト内で作成することも任意のクラスへのアクセスを持っていることにより、 「ローカル:」を使用して接頭辞もちろん

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

    を、あなたはあなたが欲しいものは何でもそれに名前を付けることができ、「ローカル」を使用する必要はありません。同じように必要な他の名前空間への参照を追加することもできます。

    9

    XmlnsDefinitionAttributeをアセンブリに追加することによって、複数のCLR名前空間を1つのXML名前空間にマップすることもできます。これは、Systemの下に多くの名前空間をマッピングすることによって、WPFチームが行ったことです。このようなWindowsの場合:

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

    この構文は、あなたのXAMLを簡素化していますが、一緒にマージCLR名前空間に同じ名前のクラスを持っていないように注意してくださいすることができます。

    関連する問題