没有合适的资源?快使用搜索试试~ 我知道了~
首页如何搭建新的WPF项目框架
下面就WPF项目框架搭建步骤一步一步的分享给大家。 在WPF项目开发中最常用的开发模式无疑是MVVM模式, MVVM模式开发的好处,在这里就不详细讨论, 还有 本文中所使用MVVMLight框架,为什么使用MVVM框架(1、框架较轻,2、学习成本低、3、适用大多数中小型项目,4、相对于微软的prism框架更容易上手) 下面开始 一步一步 搭建框架 第一步: 利用反射创建VM构造器 public class ViewModelFactory { private static Dictionary<string> vmMap = new Dictionary<st
资源详情
资源评论
资源推荐

如何搭建新的如何搭建新的WPF项目框架项目框架
下面就WPF项目框架搭建步骤一步一步的分享给大家。
在WPF项目开发中最常用的开发模式无疑是MVVM模式, MVVM模式开发的好处,在这里就不详细讨论, 还有 本文中所使用
MVVMLight框架,为什么使用MVVM框架(1、框架较轻,2、学习成本低、3、适用大多数中小型项目,4、相对于微软的
prism框架更容易上手)
下面开始 一步一步 搭建框架
第一步:第一步: 利用反射创建利用反射创建VM构造器构造器
public class ViewModelFactory
{
private static Dictionary<string, object> vmMap = new Dictionary<string, object>();<br>
public static T GetViewModel<T>() where T : ViewModelBase
{
Type vmType = typeof(T);
if (vmMap.ContainsKey(vmType.FullName))
{
return (T)vmMap[vmType.FullName];
}
else
{
object vm = Activator.CreateInstance(vmType);
vmMap.Add(vmType.FullName, vm);
return (T)vm;
}
}
public static T GetViewModel<T>(object[] data,string id) where T : ViewModelBase
{
Type vmType = typeof(T);
if (vmMap.ContainsKey(id))
{
return (T)vmMap[id];
}
else
{
object vm = Activator.CreateInstance(vmType, data);
vmMap.Add(id, vm);
return (T)vm;
}
}
}
为什么用一个Dictionary 将ViewModel 缓存起来,相信利用MVVM模式开发大多数的开发者碰到的问题无疑是各个VM之间的
数据通信问题,利用Dictionary缓存起来有两个好处:
1、可以解决VM之间相互通信的问题(当然你也可以用MvvmLight的 Message机制来通信,PS:个人认为完全没必要用
MvvmLight中的 Messgae,如果我们框架搭的合理完全可以规避去用MvvmLight中 Message,Message比较难于管理,如果
在我们的代码中出现大量的Message无疑是一件痛苦的事情,所以笔者不推荐用MvvmLight中的Message)
2、如果我们的应用程序要频繁的与服务器做交互,我们完全可以用缓存,以避免每次都去请求服务器(可以缓存一些在应用
程序中一直使用的数据,规避二次请求)
public static T GetViewModel<T>() where T : ViewModelBase 这个函数(将我们的VM完全限定名作为KEY缓存)适用于单
例模式的VM,
public static T GetViewModel<T>(object[] data,string id) where T : ViewModelBase 这个函数(主要构件带参数的VM构造函
数,id是唯一ID),为什么会用到它,举个例子
例如我们的QQ聊天窗口,所有聊天窗口基本相同用到的VM类型也是相同,所以这时候就需要多个VM实例了,第一种方法就
行不通了 所以会用到这种方法去构建VM,并将id作为KEY值缓存起来
第二步:构建我们的第二步:构建我们的ViewModel 基类:基类:
public delegate void CloseEventHandle(object sender);
public class CustomViewModel : ViewModelBase
{

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0