<p>Why is it that there are two kinds of references in xaml.</p>

<p>One looks like this:</p>

<pre><code>xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
</code></pre>

<p>But mine look like this:</p>

<pre><code>xmlns:WPFToolKit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
</code></pre>

<p>Why can't I do this:</p>

<pre><code>xmlns:local="http://myschema.mydomain.com/MyControlNamespace
</code></pre>

<p>Thanks to <a href="https://stackoverflow.com/users/7116/sixlettervariables">ixlettervariables</a> for the answer. Here's a detailed explanation <a href="http://codingcontext.wordpress.com/2008/10/09/consolidating-xaml-namespaces/" rel="nofollow noreferrer">here</a></p>

The second instance is basically an unmapped, but explicit reference to a namespace in an assembly. The first instance is a mapped reference to a namespace in some assembly referenced by your project.
XAML Namespaces and Namespace Mapping
, over at MSDN explains this in more detail:
WPF defines a CLR attribute that is consumed by XAML processors in order to map multiple CLR namespaces to a single XML namespace. This attribute,
XmlnsDefinitionAttribute
, is placed at the assembly level in the source code that produces the assembly. The WPF assembly source code uses this attribute to map the various common namespaces, such as System.Windows and System.Windows.Controls, to the
http://schemas.microsoft.com/winfx/2006/xaml/presentation
namespace.
Therefore, by adding the following to your assembly you could do just that:
```
```
[assembly:XmlnsDefinition("http://myschema.mydomain.com/MyControlNamespace", "My.Control.Namespace")]
```
```