Windows Phone 实用开发技巧(29):动态绑定Pivot

来源:未知 责任编辑:责任编辑 发表时间:2013-08-27 16:00 点击:

前几天有个网友问我如何动态绑定Pivot项,即PiovtItem的项是动态 的,PivotItem中的数据也是动态的。这个使用MVVM模式可以很方便的实现,在ViewModel中设置一个集合表示当前有多少个Item,集合 中的类中含有当前PivotItem中的数据源。下面以一个简单的demo来演示下:

先来看看XAML中是怎么去绑定的

<!--LayoutRoot is the root grid where all page content is placed--> <Grid x:Name="LayoutRoot" Background="Transparent">     <!--Pivot Control-->     <controls:Pivot Title="MY APPLICATION"                      ItemTemplate="{StaticResource DT_Pivot}"                      HeaderTemplate="{StaticResource DT_Header}"                     ItemsSource="{Binding BindData}">     </controls:Pivot> </Grid> 

Pivot的数据源绑定是ViewModel中的BindData,ItemTemplate表示PivotItem的模板,HeaderTemplate表示PivotItem中Header模板,这两个模板分别如下:

<phone:PhoneApplicationPage.Resources>     <DataTemplate x:Key="DT_Pivot">         <ListBox ItemsSource="{Binding ListData}">             <ListBox.ItemTemplate>                 <DataTemplate>                     <TextBlock Text="{Binding}" />                 </DataTemplate>             </ListBox.ItemTemplate>         </ListBox>     </DataTemplate>     <DataTemplate x:Key="DT_Header">         <TextBlock Text="{Binding Name}" />     </DataTemplate> </phone:PhoneApplicationPage.Resources> 

HeaderTemplate十分简单,就使用一个TextBlock表示当前的标题。Pivot的ItemTemplate里面放置一个ListBox,数据源为BindData下的ListData

ViewModel中的数据源:

private ObservableCollection<TestPivot> _bindData;
public ObservableCollection<TestPivot> BindData
{
    get     {
        return _bindData;
    }
    set     {
        _bindData = value;
        RaisePropertyChanged("BindData");
    }

}

TestPivot即自己定义的类,含有PiovtHeader和PivotItem数据源的类:

public class TestPivot {
    /// <summary>     /// property for pivot header     /// </summary>     public string Name { get; set; }

    /// <summary>     /// data for pivot item datasource(eg.listbox)     /// </summary>     public List<string> ListData { get; set; }
}

ok,绑定已经建立好了,现在就是如何初始化数据源了,为了简单起见,以最简单的循环生成绑定源数据:

public void AddData(int size)
{
    BindData = new ObservableCollection<TestPivot>();
    for (int i = 0; i < size; i++)
    {
        TestPivot t = new TestPivot();
        t.Name = "piovt item" + i;
        t.ListData = new List<string>();
        for (int j = 0; j < 10; j++)
        {
            t.ListData.Add("List item"+j);
        }
        BindData.Add(t);
    }
}

其中size表示当前有几个PivotItem,这里Pivot数据源可以是同步方式也可以以异步方式,只要TestPivot实现NotifyPropertyChanged,并且属性ListData通知改变即可。

你可以从这里找到源代码, Hope that helps.

本文出自 “Alexis的51博客” 博客,请务必保留此出处http://alexis.blog.51cto.com/2621421/720459

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Windows Phone 项目实战之我的微盘(下)
    • Windows Phone 实用开发技巧(26):对DataTemplate中的元素播放
    • Windows Phone 实用开发技巧(25):Windows Phone读取本地数据
    • Windows Phone 实用开发技巧(27):创建透明Tile
    • Windows Phone 知识锦(12月版)
    • Windows Phone实用开发技巧(31):密码加密
    • Windows Phone 项目实战之我的微盘(上)
    • WP7实例篇之土豆搜索器(2)
    • [翻译]WP7 QuickStart-第七篇-布局
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1