我有一个Page
从这样的库中导入控件:
<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 :(得分:0)
对于后人,现在我在使用#include g.h文件之前使用这个kludge,但它并不是非常漂亮:
namespace Foo
{
namespace Bar
{
typedef ::Bar::SomeControl SomeControl;
}
}
它将控件引入(不正确的)命名空间,以便即使XAML代码生成器出错也能正常工作。