2014-07-08 23 views
0

消歧的命名空间我有一个Page是进口管制从图书馆这样的:中产生的XAML代码

<Page 
    x:Class="Foo.Bar.SomePage" 
    xmlns:myNamespace="using:Bar.Controls"> 

    <myNamespace:SomeControl x:Name="someControl"> 
     <!-- snip --> 
    </myNamespace:SomeControl> 
</Page> 

正如你可以在这里看到,该页面在::Foo::Bar命名空间中声明,而SomeControl声明在::Bar命名空间中。我面临的问题是Visual Studio生成验证码:

namespace Bar { 
    namespace Controls { 
     ref class SomeControl; 
    } 
} 

namespace Foo 
{ 
    namespace Bar 
    { 
     partial ref class SomePage : /* ... */ 
     { 
      /* ... */ 
      private: Bar::SomeControl^ someControl; 
     }; 
    } 
} 

字段定义Bar::SomeControl^ someControl尝试选择::Foo::Bar::SomeControl而不是::Bar::SomeControl因为Visual Studio不完全限定它。

这是否是有意设计的(是否有一种方法可以将using: URI短语以使其完全限定名称),还是这是一个错误?我该如何解决这个问题?

我认为我可以说服人们对这个特定类的命名空间结构作出例外,但是如果存在针对此类的代码内解决方案会更简单。

回答

0

对于后人,现在我用这个杂牌#包括生长激素文件之前,但它不是超级靓:

namespace Foo 
{ 
    namespace Bar 
    { 
     typedef ::Bar::SomeControl SomeControl; 
    } 
} 

它引入了控制入(不正确)的命名空间,以便它的作品甚至尽管XAML代码生成器会出错。