无法从 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,仅供参考。