Win10系列:VC++数据绑定
数据绑定是一种将后台数据绑定到前台控件的机制,通常用于动态地将对象或集合中所保存的数据显示到前台界面中。本节通过一个具体的示例来说明在Windows应用商店应用中如何通过数据绑定将保存在集合中的数据显示到前台界面中。
在Visual Staudio 2012中新建一个Visual C++的Windows应用商店的空白应用程序项目,并命名为BindingDemo。接着打开MainPage.xaml.h头文件,添加如下的代码:
//定义类FeedItem
[Windows::UI::Xaml::Data::Bindable]
public ref class FeedItem sealed
{
internal:
//FeedItem构造函数
FeedItem(void){}
public:
//声明属性Country
property Platform::String^ Country;
//声明属性City
property Platform::String^ City;
};
在上面的代码中,首先使用"[Windows::UI::Xaml::Data::Bindable]"语句定义一个可以绑定到前台界面的FeedItem类,然后在此类中定义构造函数FeedItem,接着声明两个String类型的属性 Country和City。
定义了FeedItem类以后,接着布局前台界面。打开MainPage.xaml文件,并在Grid元素中添加如下代码:
<ListBox x:Name="InfoListBox" ItemsSource="{Binding}" Foreground="Black" Width="200" Height="260" FontSize="24">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Country}"/>
<TextBlock Text="{Binding City}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在上面的代码中,添加了一个名为"InfoListBox"的ListBox控件,并将此控件的ItemsSource属性设置为{Binding},表示在后台所创建的集合将绑定到这个属性。接着为ListBox控件添加DataTemplate模版,并在此模版中添加两个TextBlock控件,用FeedItem类的Country属性和City属性分别绑定到这两个TextBlock控件的Text属性上。
布局了前台界面以后,接着打开MainPage.xaml.cpp源文件,并添加如下的代码:
MainPage::MainPage()
{
InitializeComponent();
//创建一个Vector<FeedItem^>类型的集合items
Platform::Collections::Vector<FeedItem^>^ items=ref new Platform::Collections::Vector<FeedItem^>();
//创建FeedItem类的对象feedItemCN
FeedItem^ feedItemCN = ref new FeedItem();
feedItemCN->Country="中国";
feedItemCN->City="北京";
//创建FeedItem类的对象feedItemUS
FeedItem^ feedItemUS = ref new FeedItem();
feedItemUS->Country="美国";
feedItemUS->City="纽约";
//创建FeedItem类的对象feedItemUK
FeedItem^ feedItemUK = ref new FeedItem();
feedItemUK->Country="英国";
feedItemUK->City="伦敦";
//将上述对象保存到items集合中
items->Append(feedItemCN);
items->Append(feedItemUS);
items->Append(feedItemUK);
//设置ListBox控件的DataContext属性
InfoListBox->DataContext=items;
}
在上面的代码中,首先创建一个Vector<FeedItem ^>类型的集合items,接着分别创建FeedItem类的三个对象feedItemCN、feedItemUS和feedItemUK,并给这三个对象中的Country属性和City属性赋值。然后调用items集合的Append函数,分别将对象feedItemCN、feedItemUS和feedItemUK添加到此集合中。最后将items集合赋值给名为"InfoComboBox"的ComboBox控件的DataContext属性。
运行BindingDemo项目,前台界面如图20-2所示。
图20-2 items集合中的数据
相关文章
- C++之数据、结构体初始化值为0
- 【C/C++学院】0831-类与对象的异常/面试100题1-100
- C++ <algorithm>Sort()函数秒杀任何常用排序算法
- Open3D (C++)从模型数据中均匀采样点云
- C++设计模式:数据访问对象模式
- 解答私信@被c++折磨头秃的花季美少女 //C++ 写一个带命令行参数的程序,可以实现将参数求和、求平均值以及排序之后输出(参数的数量不确定)。
- C++对数据进行16进制编码&解码(hex encode)
- c++数组初始化‘0’
- error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
- C/C++数据对齐汇总
- AI模型C++部署:ubuntu安装Cython并使用C/C++调用python动态库【附加c++与python互相调用算法demo程序接口的源码】
- C++引用不能绑定到临时数据
- C++之using用法(一百一二十九)
- QML与C++交互:在qml中使用QSqlQueryModel显示数据库数据
- VC++使用zlib压缩及解压数据,使用base64编码及解码数据(附源码)
- 巧用Visual Studio中的数据断点去排查C++内存越界问题
- C++中栈与堆数据存取情况
- 关于 C++ 操作 MySQL 数据查询的底层数据结构与函数支持