大佬教程收集整理的这篇文章主要介绍了Silverlight实战示例6(兼集合属性的妙用)--客户端视图模型层(VM),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
3)视图模型层DynamicDataviewmodel .cs
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using MAppStructure.Datasource;
using System.ComponentModel;
using System.Collections.Generic;
using MEntities;
namespace MAppStructure.viewmodel
{
/// <sumMary>
/// 视图模型层,注意必须实现INotifyPropertyChanged接口,这样VM层才能绑定。
/// viewmodel可以做一个基类,这个基类主要是实现INotifyPropertyChanged接口
/// 和你需要的一些公共方法,这里为了简单些,就没有做基类了.
/// </sumMary>
public class DynamicDataviewmodel : INotifyPropertyChanged
{
/// <sumMary>
/// 视图模型层主要采用的模型层服务实例,注意
/// 可以调用多个模型层得服务实例,这里是演示,所以只做了一个。
/// </sumMary>
private DynamicDatasource theS;
public DynamicDataviewmodel()
{
theS = new DynamicDatasource();
//初始化并注册命令.
Commands = new Dictionary<String,MyCommand>();
Commands.Add("Button1Command",new MyCommand(OnButtonCommand));
}
private void OnButtonCommand(object parameter)
{
loadData();
messageBox.Show("ok");
}
/// <sumMary>
///命令字典集合,这样做的好处一是可以减少定义命令的硬代码,同时提供了一种动
///态命令的可能性,并有利于扩展.
/// </sumMary>
public Dictionary<String,MyCommand> Commands
{
get;
private set;
}
private List<DynamicDa@R_720_2301@w> _Datasource;
public List<DynamicDa@R_720_2301@w> Datasource
{
get
{
return _Datasource;
}
private set
{
_Datasource = value;
RaisePropertyChanged("Datasource");
}
}
private DynamicDataTable _DataTable;
/// <sumMary>
/// 获取来的动态数据表.
/// </sumMary>
public DynamicDataTable DataTable
{
get
{
return _DataTable;
}
private set
{
_DataTable = value;
RaisePropertyChanged("DataTable");
}
}
/// <sumMary>
/// 数据加载.
/// </sumMary>
private void LoadData()
{
thes.GetDynamicDataTable("SELEct * from employeeInfo ",op =>
{
if (op.HasError == falsE)
{
Datasource = op.Value.Rows;
DataTable = op.Value;
}
else
{
messageBox.Show(op.ErrorMsg);
}
},null);
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(String propertyName)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this,new PropertyChangedEventArgs(propertyName));
}
}
}
/// <sumMary>
/// 自己的命令类,主要为了命令的绑定.这里是典型的命令模式,命令的接收者是本Vm.不过这里的
/// 命令接收者并没有作为命令的成员,而是采用委托方式,在这种情况下更为便利。
/// </sumMary>
public class MyCommand : ICommand
{
public bool CanExecute(object parameter)
{
return true;
}
private Action<object> _action;
public MyCommand(Action<object> Action)
{
this._action = Action;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter) { if (_action != null) { _action(parameter); } } } } 这里大家注意的是,我的命令采用的不是一般的定义方式,而是采用字典集合的方式进行,好处上面讲了,请大家注意页面的绑定方式。
以上是大佬教程为你收集整理的Silverlight实战示例6(兼集合属性的妙用)--客户端视图模型层(VM)全部内容,希望文章能够帮你解决Silverlight实战示例6(兼集合属性的妙用)--客户端视图模型层(VM)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。