无法从 xaml 引用 C++/cx class? (UWP)
Can't reference C++/cx class from xaml? (UWP)
我的应用程序中有一个 C++ class testclient
:
namespace testclient{
namespace models{
ref class myclass sealed{
public:
myclass();
property String^ getstring
{
String^ get()
{
return string;
}
}
private:
String^ string = "test";
}}}
我想将控件绑定到 属性 getstring
,根据我对 UWP XAML 数据绑定的了解,我必须将其包含在MainPage.xaml:xmlns:data="using:testclient.models
问题是,智能感知告诉我 "Undefined namespace. The 'using' URI refers to a namespace called testclient.models that could not be found." 我做错了什么?
编辑:当我将 class 放入 Mainpage.Xaml.h 时,我发现问题消失了,但我不想这样做...
每个绑定都由一个绑定目标和一个绑定源组成。通常,目标是控件或其他 UI 元素的 属性,源是 class 实例的 属性。
如果您想使用 myclass 作为 MainPage 的 UI 元素的数据源,您需要确保 MainPage 可以访问 myclass 的实例。这就是您的第一个版本导致错误的原因。为了尽可能少地修改mainPage.Xaml.h,您可以按照下面的步骤创建一个单独的文件(为了方便调试,我简化了myclass的成员):
1) 创建 myclass.h:
namespace TestClient{
namespace models{
public ref class myclass sealed
{
private:
int test = 1;
public:
myclass()
{
}
property int gettest
{
int get() { return test; };
}
};
}
}
2) 在MainPage.h中添加以下内容:
#include "myclass.h"
namespace TestClient
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public ref class MainPage sealed
{
private:
TestClient::models::myclass myTest;
.......
}
.........
}
3) 然后你可以随意操作mainPage.cpp中我的class数据。代码可能如下所示:
MainPage::MainPage()
{
InitializeComponent();
int i = this->myTest.gettest;
...........
}
还有一个问题:嵌套了这么多命名空间?您还可以在这里找到有关数据绑定的sample,仅供参考。
我的应用程序中有一个 C++ class testclient
:
namespace testclient{
namespace models{
ref class myclass sealed{
public:
myclass();
property String^ getstring
{
String^ get()
{
return string;
}
}
private:
String^ string = "test";
}}}
我想将控件绑定到 属性 getstring
,根据我对 UWP XAML 数据绑定的了解,我必须将其包含在MainPage.xaml:xmlns:data="using:testclient.models
问题是,智能感知告诉我 "Undefined namespace. The 'using' URI refers to a namespace called testclient.models that could not be found." 我做错了什么?
编辑:当我将 class 放入 Mainpage.Xaml.h 时,我发现问题消失了,但我不想这样做...
每个绑定都由一个绑定目标和一个绑定源组成。通常,目标是控件或其他 UI 元素的 属性,源是 class 实例的 属性。
如果您想使用 myclass 作为 MainPage 的 UI 元素的数据源,您需要确保 MainPage 可以访问 myclass 的实例。这就是您的第一个版本导致错误的原因。为了尽可能少地修改mainPage.Xaml.h,您可以按照下面的步骤创建一个单独的文件(为了方便调试,我简化了myclass的成员):
1) 创建 myclass.h:
namespace TestClient{
namespace models{
public ref class myclass sealed
{
private:
int test = 1;
public:
myclass()
{
}
property int gettest
{
int get() { return test; };
}
};
}
}
2) 在MainPage.h中添加以下内容:
#include "myclass.h"
namespace TestClient
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public ref class MainPage sealed
{
private:
TestClient::models::myclass myTest;
.......
}
.........
}
3) 然后你可以随意操作mainPage.cpp中我的class数据。代码可能如下所示:
MainPage::MainPage()
{
InitializeComponent();
int i = this->myTest.gettest;
...........
}
还有一个问题:嵌套了这么多命名空间?您还可以在这里找到有关数据绑定的sample,仅供参考。