Xaml 如何使用 ;在UWP C+中的组合框上显示MemberPath+/CX?

Xaml 如何使用 ;在UWP C+中的组合框上显示MemberPath+/CX?,xaml,uwp,win-universal-app,windows-10-universal,c++-cx,Xaml,Uwp,Win Universal App,Windows 10 Universal,C++ Cx,因此,我试图将组合框绑定到myclass的向量myclass有一个名为key的公共平台::String^属性。因此,在我的XAML中,我将组合框的displaymemberpath设置为“key”。但是,我只得到一个空选项框,这与我将displaymemberpath设置为“asdf”(一个不存在的属性)的结果相同。为了说明我的问题,我尝试重写了这篇关于在C++/CX中使用displaymemberpath的教程:(我尝试了遵循C#中的原始教程,效果非常好) 这是我的密码: (MainPage.

因此,我试图将组合框绑定到
myclass
的向量
myclass
有一个名为
key
的公共平台::String^属性。因此,在我的XAML中,我将组合框的displaymemberpath设置为“key”。但是,我只得到一个空选项框,这与我将displaymemberpath设置为“asdf”(一个不存在的属性)的结果相同。为了说明我的问题,我尝试重写了这篇关于在C++/CX中使用displaymemberpath的教程:(我尝试了遵循C#中的原始教程,效果非常好)

这是我的密码:

(MainPage.xaml与教程完全相同)


代码隐藏:

//MainPage.xaml.h
namespace displaymembercxxtest
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public ref class MainPage sealed
    {
    public:
        MainPage();

    private:
        void ComboBox1_SelectionChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ e);
    };
    public ref class color sealed
    {
    public:
        property Platform::String^ ColorName;
        property Platform::String^ ColorValue;
        color(Platform::String^ name, Platform::String^ value)
        {
            ColorName = name;
            ColorValue = value;
        }

    };
}
//MainPage.xaml.h
命名空间DisplayMemberCxTest
{
/// 
///可以单独使用或在框架内导航到的空页。
/// 
公共参考类主页已密封
{
公众:
主页();
私人:
void ComboBox1_SelectionChanged(平台::对象^sender,Windows::UI::Xaml::控件::SelectionChangedEventArgs ^e);
};
公共参考类彩色密封
{
公众:
属性平台::字符串^ColorName;
属性平台::字符串^ColorValue;
颜色(平台::字符串^name,平台::字符串^value)
{
ColorName=名称;
颜色值=颜色值;
}
};
}
//MainPage.xaml.cpp

MainPage::MainPage()
{
    InitializeComponent();
    Platform::Collections::Vector<color^>^ colors = ref new Platform::Collections::Vector<color^> ();
    colors->Append(ref new color("INDIANRED", "#CD5C5C"));
    colors->Append(ref new  color("SALMON", "#FA8072"));
    colors->Append(ref new  color("CRIMSON", "#DC143C"));
    colors->Append(ref new  color("DEEPPINK", "#FF1493"));
    colors->Append(ref new  color("CORAL", "#FF7F50"));
    colors->Append(ref new  color("ORANGE", "#FFA500"));
    colors->Append(ref new  color("YELLOW", "#FFFF00"));
    colors->Append(ref new  color("PEACHPUFF", "#FFDAB9"));
    ComboBox1->ItemsSource = colors;
}


void displaymembercxxtest::MainPage::ComboBox1_SelectionChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ e)
{
   // not relevant to the problem 
}
MainPage::MainPage()
{
初始化组件();
平台::集合::向量^colors=ref新平台::集合::向量();
颜色->附加(参考新颜色(“印度红”,“CD5C”);
颜色->附加(参考新颜色(“鲑鱼”和“FA8072”);
颜色->附加(参考新颜色(“深红色”、“DC143C”);
颜色->附加(参考新颜色(“深粉色”、“FF1493”);
颜色->附加(参考新颜色(“珊瑚色”、“FF7F50”);
颜色->附加(参考新颜色(“橙色”、“FFA500”);
颜色->附加(参考新颜色(“黄色”、“FFFF00”);
颜色->附加(参考新颜色(“桃子泡芙”、“FFDAB9”);
ComboBox1->ItemsSource=颜色;
}
void displaymembercxxtest::MainPage::ComboBox1_SelectionChanged(平台::对象^sender,Windows::UI::Xaml::控件::SelectionChangedEventArgs ^e)
{
//与问题无关
}
以下是我看到的:

下面是我在C#中构建教程时的样子:


如您所见,C++/CX版本中的选项为空。我做错了什么

如果使用{Binding},则需要将该属性添加到color类中

请检查以下代码:

[Windows::UI::Xaml::Data::Bindable]
public ref class color sealed
{
public:
    property Platform::String^ ColorName;
    property Platform::String^ ColorValue;
    color(Platform::String^ name, Platform::String^ value)
    {
        ColorName = name;
        ColorValue = value;
    }
};

更多信息,请阅读文档。

XAML代码是相关的。它需要进入你的问题。就像我说的,它基本上是从教程中复制和粘贴的。不过,我还是在MainPage.xaml.h上面添加了它。这很有效,谢谢。displaymembersource属性基本上是在幕后使用{Binding}还是什么?{x:Bind}需要这个标记吗?
[Windows::UI::Xaml::Data::Bindable]
public ref class color sealed
{
public:
    property Platform::String^ ColorName;
    property Platform::String^ ColorValue;
    color(Platform::String^ name, Platform::String^ value)
    {
        ColorName = name;
        ColorValue = value;
    }
};