数据绑定是一种将后台数据绑定到前台控件的机制,通常用于动态地将对象或集合中所保存的数据显示到前台界面中。本节通过一个具体的示例来说明在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集合中的数据

Win10系列:VC++数据绑定的更多相关文章

  1. WPF编游戏系列 之五 数据绑定

    原文:WPF编游戏系列 之五 数据绑定        在上一篇通过用户控件将重复使用的控件封装为一个控件组,大大减少了C#代码数量,本篇继续对该控件组进行数据绑定,节省为每个控件赋值的工作.对于数据绑 ...

  2. Win10系列:VC++ Direct3D模板介绍3

    (4)Render函数 默认定义在CubeRenderer.cpp源文件中的Render函数用于绘制立体图形,此函数的实现代码如下所示: void CubeRenderer::Render() {   ...

  3. Win10系列:JavaScript 数据绑定

    使用数据绑定可以使页面中元素的属性值与数据源中的数据同步,其中数据源可以来自数据库.文件以及自定义的数据等.在常用的数据绑定方法中,简单对象绑定是将HTML元素与一个仅包含数据的简单对象相绑定,模板绑 ...

  4. Win10系列:VC++调用自定义组件3

    (3)C++/CX调用WinRT组件 在解决方案资源管理器中右键点击解决方案图标,选择添加一个Visual C++的Windows应用商店的空白应用程序项目,并命名为FileCPP.接着右键点击Fil ...

  5. Win10系列:VC++调用自定义组件2

    (2)C#调用WinRT组件 在解决方案资源管理器中右键点击解决方案图标,选择添加一个Visual C#的Windows应用商店的空白应用程序项目,并命名为FileCS.接着右键点击FileCS项目的 ...

  6. Win10系列:VC++调用自定义组件1

    通过20.9.1小节中的代码和步骤编写了一个名为"FilePickerComponent"的WinRT组件,接下来将在上一小节所新建的项目基础上,继续介绍如何在不同的语言所编写的应 ...

  7. Win10系列:VC++ Direct3D图形绘制1

    通过前面的介绍,相信读者已经了解了如何新建一个用于开发Direct3D应用程序的项目模版,以及这个项目模版中用于绘制立体图形的主要函数.在本小节中,将通过一个具体的示例来介绍如何使用Visual St ...

  8. Win10系列:VC++ Direct3D模板介绍2

    (3)CreateDeviceResources函数 CreateDeviceResources函数默认添加在CubeRenderer.cpp源文件中,此函数用于创建着色器和立体图形顶点.接下来分别介 ...

  9. Win10系列:VC++ Direct3D模板介绍1

    Visual Studio为开发Direct3D应用程序提供了便捷的模版,读者可以不必手动去新建Direct3D中所使用到的基础资源,而只需专注于图形的绘制.本小节主要为读者介绍这个模版中用于绘制图形 ...

随机推荐

  1. django模型表单ModelForm

    如果你正在构建一个数据库驱动的应用,那么你可能会有与Django的模型紧密映射的表单.比如,你有个BlogComment模型,并且你还想创建一个表单让大家提交评论到这个模型中.在这种情况下,写一个fo ...

  2. 从RGB扫描图到数字化等高线矢量图

    1 用arcgis 对地形图进行校正,主要是通过判断地图的坐标系统,然后将图层的坐标系统设置正确.选择图上的经纬网交点,对原图进行校正,一般要求四角和均匀布点. 2 二值化图像.如果是RGB图像,即彩 ...

  3. DOM结构及优化

    1.DOM树中三种常见的DOM节点: 1>元素节点:上图中<a>,<h1>等都是元素节点,即标签 2>文本节点:向用户展示的内容,如...中的"文档标题& ...

  4. leecode第一百四十一题(环形链表)

    /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...

  5. asp.net 虹软人脸识别sdk 释放内存

    初始化时申请内存,用完记得释放,不然就会报“内存已满”的. 使用时: pMem = Marshal.AllocHGlobal(detectSize); 释放内存: Marshal.FreeHGloba ...

  6. 第 3 章 镜像 - 019 - 使用公共 Registry

    保存和分发镜像的最直接方法就是使用 Docker Hub.https://hub.docker.com/ Docker Hub 是 Docker 公司维护的公共 Registry.用户可以将自己的镜像 ...

  7. Server SQL Modes

    The MySQL server can operate in different SQL modes, and can apply these modes differently for diffe ...

  8. android-------Android Studio使用MAT分析工具遇到的错误

    今天主要介绍一下我使用MAT工具分析文件时遇到的一个错误 Error opening heap dump 'a.hprof'. Check the error log for further deta ...

  9. fedora21 中lamp的搭建(测试没有问题)

    LAMP Stands for Linux,Apache,MySQL and PHP. Most of the websites works with the above combination. T ...

  10. 3 爬虫解析 Xpath 和 BeautifulSoup

    1.正则表达式 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [-] \D : 非数字 \w :数字.字母.下划线.中文 \W : 非\w ...