2008-10-07 7 views
5

Pourquoi existe-t-il deux types de références dans xaml?Quelle est la différence entre un espace de noms de schéma et une référence d'assembly dans WPF?

On ressemble à ceci:

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

Mais le mien ressembler à ceci:

xmlns:WPFToolKit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit" 

Pourquoi ne puis-je faire ceci:

xmlns:local="http://myschema.mydomain.com/MyControlNamespace 

Merci à ixlettervariables pour la réponse . Voici une explication détaillée here

Répondre

7

La seconde instance est fondamentalement une référence non mappée mais explicite à un espace de noms dans un assemblage. La première instance est une référence mappée à un espace de noms dans un assembly référencé par votre projet. XAML Namespaces and Namespace Mapping, sur le site MSDN explique plus en détail:

WPF définit un attribut CLR qui est consommée par les processeurs XAML afin de cartographier plusieurs espaces de noms CLR à un espace de noms XML. Cet attribut, XmlnsDefinitionAttribute, est placé au niveau de l'assembly dans le code source qui produit l'assembly. Le code source de l'assembly WPF utilise cet attribut pour mapper les différents espaces de noms communs, tels que System.Windows et System.Windows.Controls, vers l'espace de noms http://schemas.microsoft.com/winfx/2006/xaml/presentation.

Par conséquent, en ajoutant ce qui suit à votre assemblée, vous pouvez le faire que:

[assembly:XmlnsDefinition("http://myschema.mydomain.com/MyControlNamespace", "My.Control.Namespace")] 
0

La référence du schéma est utilisé pour les éléments standard XAML, que le compilateur sait comment mapper directement intégré dans les classes WPF. La référence d'espace de noms CLR est un indice pour le compilateur que l'espace de nommage et l'espace de noms doivent rechercher lors du mappage des éléments XML dans votre espace de noms d'espaces de noms à vos classes CLR/WPF.

Questions connexes