Windows 8 Store Apps學習(55) 綁定: MVVM 模式

來源:互聯網
上載者:User

介紹

重新想象 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));            }        }    }}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.