Windows 8 Store Apps学习(55) 绑定: MVVM 模式

介绍

重新想象 Windows 8 Store Apps 之 绑定

通过 MVVM 模式实现数据的添 加、删除、修改和查询

示例

1、Model 层

Binding/MVVM/Model/ProductDatabase.cs

/*
 * Model 层的数据持久化操作(本地或远程)
 *
 * 本例只是一个演示
 */

using System;
using System.Collections.Generic;
using System.Linq;

namespace XamlDemo.Binding.MVVM.Model
{
    public class ProductDatabase
    {
        private List<Product> _products = null;

        public List<Product> GetProducts()
        {
            if (_products == null)
            {
                Random random = new Random();

                _products = new List<Product>();

                for (int i = 0; i < 100; i++)
                {
                    _products.Add(
                        new Product
                        {
                            ProductId = i,
                            Name = "Name" + i.ToString().PadLeft(4, '0'),
                            Category = "Category" + (char)random.Next(65, 91)
                        });
                }
            }

            return _products;
        }

        public List<Product> GetProducts(string name, string category)
        {
            return GetProducts().Where(p => p.Name.Contains(name) && p.Category.Contains(category)).ToList();
        }

        public void Update(Product product)
        {
            var oldProduct = _products.Single(p => p.ProductId == product.ProductId);
            oldProduct = product;
        }

        public Product Add(string name, string category)
        {
            Product product =new Product();
            product.ProductId = _products.Max(p => p.ProductId) + 1;
            product.Name = name;
            product.Category = category;

            _products.Insert(0, product);

            return product;
        }

        public void Delete(Product product)
        {
            _products.Remove(product);
        }
    }
}

Binding/MVVM/Model/Product.cs

/*
 * Model 层的实体类,如果需要通知则需要实现 INotifyPropertyChanged 接口
 */

using System.ComponentModel;

namespace XamlDemo.Binding.MVVM.Model
{
    public class Product : INotifyPropertyChanged
    {
        public Product()
        {
            ProductId = 0;
            Name = "";
            Category = "";
        }

        private int _productId;
        public int ProductId
        {
            get { return _productId; }
            set
            {
                _productId = value;
                RaisePropertyChanged("ProductId");
            }
        }

        private string _name;
        public string Name
        {
            get { return _name; }
            set
            {
                _name = value;
                RaisePropertyChanged("Name");
            }
        }

        private string _category;
        public string Category
        {
            get { return _category; }
            set
            {
                _category = value;
                RaisePropertyChanged("Category");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        protected void RaisePropertyChanged(string name)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(name));
            }
        }
    }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mvvm开发
, string
, mvvm
, public
, name
, mvvm模式
, category
, #MVVM
, 1-Model层
mvvm库
,以便于您获取更多的相关知识。

时间: 2024-09-12 08:05:37

Windows 8 Store Apps学习(55) 绑定: MVVM 模式的相关文章

Windows 8 Store Apps学习(54) 绑定: 增量方式加载数据

介绍 重新想象 Windows 8 Store Apps 之 绑定 通过实现 ISupportIncrementalLoading 接口,为 ListViewBase 的增量加载提供数据 示例 实现 ISupportIncrementalLoading 接口,以便为 ListViewBase 的增量加载提供数据 Binding/MyIncrementalLoading.cs /* * 演示如何实现 ISupportIncrementalLoading 接口,以便为 ListViewBase 的增

Windows 8 Store Apps学习(53) 绑定

介绍 重新想象 Windows 8 Store Apps 之 绑定 与 ObservableCollection 绑 定 与 CollectionViewSource 绑定 与 VirtualizedFilesVector 绑定 对 VirtualizedItemsVector 绑定 示例 1.演示如何绑定 ObservableCollection<T> 类型的数据 Binding/BindingObservableCollection.xaml <Page x:Class="

Windows 8 Store Apps学习(52) 绑定

绑定: 与 Element Model Indexer Style RelativeSource 绑定, 以及绑定中的数据转换 介绍 重新想象 Windows 8 Store Apps 之 绑定 与 Element 绑定 与 Model 绑定 与 Indexer 绑定 对 Style 中的 Setter 进行绑定(绑定静态资源) Binding 的一个扩展标记 RelativeSource 的应用 绑定中的数据转换 示例 1.演示如何与 Element 绑定,以及 OneTime, OneWay

重新想象 Windows 8 Store Apps (55) - 绑定: MVVM 模式

原文:重新想象 Windows 8 Store Apps (55) - 绑定: MVVM 模式 [源码下载] 重新想象 Windows 8 Store Apps (55) - 绑定: MVVM 模式 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 绑定 通过 MVVM 模式实现数据的添加.删除.修改和查询 示例1.Model 层Binding/MVVM/Model/ProductDatabase.cs /* * Model 层的数据持久化操作(本地或远程) *

Windows 8 Store Apps学习(59) 锁屏

介绍 重新想象 Windows 8 Store Apps 之 锁屏 登录锁屏,获取当前程序的锁屏权限,从锁屏中移除 发送徽章或文本到锁屏 将一个 app 的多个 tile 绑定到锁屏 自定义锁屏图片 示例 1.演示如何登录锁屏,获取当前程序的锁屏权限,从锁屏中移除 LockScreen/AccessLockScreen.xaml <Page x:Class="XamlDemo.LockScreen.AccessLockScreen" xmlns="http://sche

Windows 8 Store Apps学习(41) 打印

介绍 重新想象 Windows 8 Store Apps 之 打印 示例 1.需要打印的文档 Print/PrintPage.xaml <Page x:Class="XamlDemo.Print.PrintPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xam

Windows 8 Store Apps学习(21) 动画: ThemeTransition(过渡效果)

介绍 重新想象 Windows 8 Store Apps 之 动画 ThemeTransition 的概述 EntranceThemeTransition - 页面间跳转时的过渡效果 ContentThemeTransition - 内容改变时的过渡效果 RepositionThemeTransition - 位置改变时的过渡效果 PopupThemeTransition - 弹出时的过渡效果 AddDeleteThemeTransition - 添加项或删除项时的过渡效果 ReorderThe

Windows 8 Store Apps学习(16) 控件基础: 依赖属性等等

控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试 介绍 重新想象 Windows 8 Store Apps 之 控件基础 DependencyProperty - 依赖属性 AttachedProperty - 附加属性 控件的继承关系 路由事件和命中测试 示例 1.开发一个具有 DependencyProperty 和 AttachedProperty 的自定义控件 MyControls/themes/generic.xaml <ResourceDictionary x

Windows 8 Store Apps学习(11) ListView控件和 GridView控件

介绍 重新想象 Windows 8 Store Apps 之 ListView 和 GridView ListView - 列表控件 GridView - 网格控件 示例 1.ListView 的 Demo ListViewDemo.xaml <Page x:Class="XamlDemo.Controls.ListViewDemo" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation&quo