摘要:
一、新建一个资源文件,然后设置其Build Actoin(生成操作)为Resource(资源);二、在App.xaml.cs的StartUp事件或者是你需要的时机代码段写上如下代码: ResourceDictionary languageResDic = new ResourceDictionary(); languageResDic.Source = new Uri("Dictionary1.xaml", UriKind.RelativeOrAbsolute); this.Resources.MergedDictionarie... 阅读全文
摘要:
private void KeyDown(object sender, KeyEventArgs e) { if (e.Key== Key.Up && Keyboard.Modifiers== ModifierKeys.Alt) { } }上述代码看起来蛮正常,但是很遗憾,当我们按下向上键和Alt键时候是无效的,可是当按下Ctrl和向上键就是ok的,很是无语,好在有了下边的代码。 private void KeyDown(object sender,... 阅读全文
摘要:
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。吐槽在先:与其说这是一个模式,倒不如说是一种解决对象克隆的方法。好吧,还是叫做模式专业一点。场景:我们经常会在代码中使用Clone方法进行对象的克隆,当然我们的类默认是木有这个方法,需要自己实现自ICloneable接口,然后就可以开始自己的克隆了。当然,中间不仅仅是实现这个简单,克隆还分为浅拷贝和深拷贝,等会再说。模式元素:这个其实真没什么元素,只要你的类实现了iCloneable接口就可以的哦(当然中间涉及到的还是深拷贝和浅拷贝问题哦)。开始实战:我们用写简历这个例子来作为我们模式的探讨对象,简历可能会写很多份,因为 阅读全文
摘要:
写在开头:本文内容来自 WCF全面解析中的一个经典例子,如果你已经看过了,那么可以忽略本文,本文旨在和大家分享不一样的WCF使用方法。准备工作:1.创建解决方案WCFService(当然名字可以任意哦)依次添加四个项目,如上图,Client和Hosting为控制台应用程序,Service和Service.Interface均为类库。2.引用关系Service.Interface:定义服务契约(Service Contract)接口,引用WCF核心库System.ServiceModel.dll;Service:定义服务的项目,由于需要实现具体的服务,而服务契约在Service.Interfac 阅读全文
摘要:
装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。上图为装饰模式的结构图,Component定义一个对象接口可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责(ConcreteComponent主要就是作为一个具体的对象存在)。Decorator,装饰抽象类,继承自Component,从外类扩展Component类的功能,相对于Component来说无需知道Decorator存在。ConcreteDecorator就是具体的装饰对象,起到给Component添加职责的 阅读全文
摘要:
策略模式:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。策略模式的例子使用商场收银再好不过了,商场默认为正常收银;如果有打折,比如是打8折;如果有满减,满100减20;再或者满100送10积分;也可能是打折后满200减20等等这样的很多方式。而这些一个个方式也就是一个个不同的算法,根据策略模式的定义,将这些一个个算法分别封装起来(即有自己的一个个类),然后客户端想怎么用就怎么用。策略模式三元素:1.Context上下文,用一个属性或者是一个方法来配置,维护一个策略的对象; 2.策略类(策略接口),定义所有支持算法的接口; ... 阅读全文
摘要:
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。简单工厂 VS 抽象工厂:关于这两个模式的区别,我思考了下。简单工厂只所以简单,是因为它只是把创建一个类的过程进行了封装(这些类一般来说有一个公共的基类),通过Switch或者其他的判断形式创建需要的类(当然也是可以使用反射);而抽象工厂创建的类更为复杂,通常来说创建的类(子类)有同一基类,而在不同情形下选择对应的子类。情形重现:说到抽象工厂,必定想到对于不同数据库怎么快速切换类对象,也就是说可以很方便简单创建自己想到的类对象,废话不多说。实体类接口: interface IUser { void ... 阅读全文
摘要:
在程序中如果希望某一个对象(类或者是窗体等任何的对象)只创建一次也就是至始至终使用同一个实例,那么我们就会用到了单例模式,对于单例模式有两种方式可以实现:1.私有构造函数+私有静态对象实例+公有访问方法 class MySingle { //控制线程加锁对象 private static readonly object obj = new object(); //私有对象实例 private static MySingle instance; /// /// 私有构造函数 /// ... 阅读全文
摘要:
本文简介1.定义简单的Style2.应用Style到元素3.动态加载Style资源文件4.Style的继承5.组织内编写Style(在元素内)6.自动应用Style到指定类型元素7.Style绑定表达式8.Behaviors的准备工作9.创建Actions10.在元素(Element)上使用Action11.创建TargetedTriggerAction.12.创建Behaviors13.一些微软提供的Actions,Triggers,Behaviors1.定义简单的Style Silverlight和css是完全不同的,通过Style标签定义,一个Style必须... 阅读全文
摘要:
本文简介:1.为什么要使用OOB?使用OOB的作用?2.如何实现OOB模式3.对OOB进行一些设置;4.检测OOB的安装状态;5.更新应用程序;6.WebBrowser控件;7.桌面通知窗口;8.记录窗体的状态;9.提升信任;10.子窗体(非ChildWindow,同时可响应的多个窗体);11.Com组件访问;12.在浏览器中提升信任。1.理解Oob 实现OOB之后将有如下的作用: (1)获得一个桌面的快捷方式; (2)可以实现离线访问(当然要结合本地存储); (3)获得更高的信任权限。2.实现一个最简单的OOB应用程序 (1)右键Silverlight应用程序选择Silverlight选项. 阅读全文