Clr namespace mapping to default xaml namespaces
I'm a bit tired of having to declare an xmlns in every xaml file and having to use prefixes for my custom controls. Is it possible to map a clr namespace to "http://schemas.microsoft.com/winfx/2006/xaml/presentation"?
I tried the following in my AssemblyInfo.cs:
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation","MyOwnNamespace")]
but this doesn't seem to work. I still get a compile error like:
The tag 'MyCustomControl' does not exist in XML namespace 'http://schemas.microsoft.com/winfx/2006/xaml/presentation'.
Note: My controls are within the same assembly (I have a single assembly).
Unfortunately, you cannot use controls mapped to a Xaml namespace defined by XmlnsDefinition
, if the controls are defined in the same assembly. Different assemblies work fine though. You'll have to use the clr-namespace
definition for this.
Why would you want to add your controls to the Xaml default namespace? Don't do this. It's like using the System
namespace for your classes because you don't want to add using
directives for their namespaces.
上一篇: XAML新手。 x:和:x是什么意思?