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;
}
};