`

[Silverlight入门系列]使用MVVM模式(2):集合

    博客分类:
  • MVVM
阅读更多

Model /ObservableCollection/ICollectionView

 

上一篇讲了《[Silverlight入门系列]使用MVVM模式(1):MVVM核心概念 》,今天讲一下集合Model。所谓集合Model就是给ItemsControl,如DataGrid,Combobox等绑定的集合数据模型。另外,通过定制ItemsControl的数据模板(DataTemplate),还可以控制集合对象中每一项的显示。实现很简单,但数据源集合对象必须继承IEnumerable接口,为了让目标属性与数据源集合的更新(不但包括元素的修改,还包括元素的增加和删除)保持同步,数据源集合还必须实现INotifyPropertyChanged接口和INotifyCollectionChanged接口。

ObservableCollection

在Silverlight中创建数据源集合可以使用内建的ObservableCollection类,因为ObservableCollection类既实现了INotifyPropertyChanged接口,又实现了INotifyCollectionChanged接口。使用ObservableCollection类不但可以实现Add、Remove、Clear和Insert操作,还可以触发PropertyChanged事件。

1 using System.Collections.ObjectModel; 2 using System.Collections; 3 4 public class MyModelCollection : ObservableCollection<MyModel> 5 { 6 public MyModelCollection() 7 { 8 } 9 10 public MyModelCollection(IEnumerable MyModels) 11 { 12 foreach (MyModel h in MyModels) 13 this.Add(h); 14 } 15 16 public void AddRange(IEnumerable MyModels) 17 { 18 foreach (MyModel h in MyModels) 19 this.Add(h); 20 } 21 } 22 23 public class MyModel 24 { 25 public int ModelID { get; set; } 26 public string ModelName { get; set; } 27 } 28 29 public class MyViewModel 30 { 31 public MyModelCollection MyModelDataCollection { get; set; } 32 public MyViewModel(MyModelCollection modelCollection) 33 { 34 MyModelDataCollection = modelCollection; 35 } 36 }

集合Model绑定到ItemControl也很简单:

1 private MyViewModel viewModel; 2 3 public MainPage() 4 { 5 InitializeComponent(); 6 7 MyModel m1 = new MyModel() { ModelID = 1, ModelName = "abc" }; 8 MyModel m2 = new MyModel() { ModelID = 2, ModelName = "def" }; 9 10 viewModel = new MyViewModel(new MyModelCollection(new List<MyModel>() { m1, m2 })); 11 12 this.DataContext = viewModel; 13 14 this.dataGrid1.ItemsSource = viewModel.MyModelDataCollection; 15 this.dataGrid1.AutoGenerateColumns = true; 16 17 this.comboBox1.ItemsSource = viewModel.MyModelDataCollection; 18 this.comboBox1.DisplayMemberPath = "ModelName"; 19 this.comboBox1.SelectedValuePath = "ModelID"; 20 21 this.comboBox1.SelectionChanged += new SelectionChangedEventHandler(comboBox1_SelectionChanged); 22 } 23 24 void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e) 25 { 26 this.textBlock1.Text = "Selected value: " + this.comboBox1.SelectedValue; 27 }

ICollectionView / PagedCollectionView

虽然上述的ObservableCollection很好用而且继承了INotifyPropertyChanged接口,有些时候我们需要对集合进行排序、过滤、分页等操作,这个时候就需要用ICollectionView接口,同样继承了INotifyPropertyChanged接口。ICollectionView接口在Silverlight下有个子类:PagedCollectionView,在WPF下有个子类:ListCollectionView.

PagedCollectionView例子:

C#:

1 public class MyViewModel : INotifyPropertyChanged 2 { 3 public ICollectionView Customers { get; private set; } 4 5 public MyViewModel( ObservableCollection<Customer> customers ) 6 { 7 // Initialize the CollectionView for the underlying model 8 // and track the current selection. 9 Customers = new PagedCollectionView( customers ); 10 Customers.CurrentChanged += 11 new EventHandler( SelectedItemChanged ); 12 } 13 14 private void SelectedItemChanged( object sender, EventArgs e ) 15 { 16 Customer current = Customers.CurrentItem as Customer; 17 ... 18 } 19 }

XAML:

1 <ListBox ItemsSource="{Binding Path=Customers}"> 2 <ListBox.ItemTemplate> 3 <DataTemplate> 4 <StackPanel> 5 <TextBlock Text="{Binding Path=Name}"/> 6 </StackPanel> 7 </DataTemplate> 8 </ListBox.ItemTemplate> 9 </ListBox>
引用地址:http://www.cnblogs.com/Mainz/archive/2011/05/04/2036680.html
分享到:
评论

相关推荐

    如何创建更好的Silverlight程序系列课程(3):Silverlight & MVVM

    在“如何创建更好的Silverlight程序系列课程(3):Silverlight & MVVM”中,我们将学习如何: 1. 设置Silverlight项目,并引入MVVM支持。 2. 创建模型类以存储和管理数据。 3. 设计视图模型,包括实现命令和数据绑定...

    Silverlight MVVM模式应用

    【Silverlight MVVM模式应用】 在软件开发领域,特别是Web应用程序设计中,Silverlight作为一个强大的RIA(Rich Internet Application)框架,被广泛应用于构建交互性强、用户体验丰富的应用。MVVM(Model-View-...

    Silverlight中使用MVVM

    在 Silverlight 应用开发中,MVVM(Model-View-ViewModel)模式是一种常见的设计模式,它将应用程序的用户界面(View)、业务逻辑(ViewModel)和数据模型(Model)分离,提高了代码的可测试性和可维护性。...

    silverlight MVVM模式示例

    **银光(Silverlight)MVVM模式详解** MVVM(Model-View-ViewModel)模式是一种在软件开发中广泛采用的设计模式,特别是在UI开发领域,如Windows Presentation Foundation (WPF)和Silverlight应用中。该模式将业务...

    silverlight做的自定义日历(MVVM模式)

    本项目是基于Silverlight实现的一个自定义日历组件,采用了MVVM(Model-View-ViewModel)设计模式,这种模式在现代软件开发中被广泛应用,尤其在UI设计中,因为它提供了更好的可测试性和可维护性。 **MVVM模式详解...

    MVVM in Delphi: Architecting and Building Model View ViewModel Applications

    "MVVM in Delphi: Architecting and Building Model View ViewModel Applications" 2016 | ISBN-10: 148422213X | 143 pages | PDF, EPUB | 23 MB Dive into the world of MVVM, learn how to build modern ...

    MVVM模式下的silverLight基于MySQL数据库的实例解析

    在本实例中,我们将展示如何使用 MVVM 模式开发一个基于 MySQL数据库的 SilverLight 应用程序,实现用户根据用户名的模糊查询。 MVVM 模式的优点 MVVM 模式解决了在 WPF/Silverlight 应用程序开发中产生的业务层和...

    WPF与Silverlight的MVVM模式教程

    ### WPF与Silverlight的MVVM模式教程:深入解析与实战指南 #### 一、MVVM模式概览 MVVM(Model-View-ViewModel)模式是一种软件架构模式,旨在简化用户界面的开发过程,尤其在WPF(Windows Presentation ...

    WPF MVVM 模式使用DataGrid

    本篇文章将详细探讨如何在MVVM模式下有效地使用DataGrid控件。 **MVVM模式** MVVM模式由三个主要部分组成: 1. **Model(模型)**:这是应用程序的核心业务逻辑,通常与数据库或服务交互,处理数据的获取和存储。 2...

    Silverlight探秘系列课程(1):创建第一个Silverlight应用

    这使得动态更新视图变得简单,尤其在MVVM(Model-View-ViewModel)设计模式下。 8. **动画和多媒体**: Silverlight内置了强大的动画和媒体播放功能。你可以创建平滑的过渡效果,播放音频和视频,甚至实现复杂的...

    使用Command机制实现的Silverlight4.0多层MVVM模式简单案例

    "使用Command机制实现的Silverlight4.0多层MVVM模式简单案例"是一个适合初学者学习的示例,它演示了如何在Silverlight中应用MVVM模式来构建一个分层的、可维护的UI。通过了解并实践这个案例,开发者可以掌握MVVM的...

    Silverlight中使用MVVM.docx

    在Silverlight应用中,MVVM(Model-View-ViewModel)是一种设计模式,它提倡将业务逻辑、用户界面和数据模型分离,从而实现更清晰的代码结构和更好的可测试性。以下是对MVVM模式在Silverlight中的应用进行的详细说明...

    SilverLight在MVVM开发模式下对MySQL数据库操作源码

    此外,由于SilverLight是一个已过时的技术,所以你可能需要在现代浏览器中使用其他框架(如Blazor或Angular)来实现类似的功能,但MVVM模式仍然是适用的。 总的来说,"SilverLight在MVVM开发模式下对MySQL数据库...

    关于silverlight中MVVM模式下的数据验证

    在Silverlight应用开发中,MVVM(Model-View-ViewModel)模式是一种常用的设计模式,它将业务逻辑、用户界面和数据模型分离,提高了代码的可测试性和可维护性。本篇将深入探讨在Silverlight中如何在MVVM模式下进行...

    实现mvvm模式 Silverlight

    在实际项目中,我们可能还需要使用一些辅助工具和框架,如MVVMLight、Caliburn.Micro或Prism,它们提供了额外的基础设施支持,如事件代理、导航服务和自动注入ViewModel等,以简化MVVM模式的实现。 总之,MVVM模式...

    Silverlight中使用MVVM.pdf

    ### Silverlight中使用MVVM详解 #### 一、MVVM模式简介 MVVM(Model-View-ViewModel)模式是一种软件架构设计模式,主要用于简化用户界面的开发与维护工作。此模式将应用程序分为三个核心组件:Model(模型)、...

    WPF简单计算器 MVVM模式

    **WPF简单计算器 MVVM模式** 本项目是一个基于Windows Presentation Foundation (WPF)设计的简单计算器,采用Model-View-ViewModel (MVVM)设计模式。MVVM是一种在XAML环境中非常流行的开发模式,它将业务逻辑、用户...

    WPF / Mvvm模式及MVC模式示例

    MVVM模式是为了解决富客户端应用,尤其是WPF和Silverlight等UI技术而提出的。它强调数据绑定,降低了视图与业务逻辑之间的耦合。 - **Model**:同样表示业务逻辑和数据,与MVC中的Model相同。 - **View**:UI元素的...

    Silverlight MVVM模式

    **Silverlight MVVM模式** MVVM(Model-View-ViewModel)模式是软件开发中的一个设计模式,尤其在创建用户界面时被广泛采用。在Silverlight应用程序中,MVVM模式能够帮助开发者实现清晰的代码结构,提高可测试性,...

Global site tag (gtag.js) - Google Analytics