Silverlight程序使用mvvmlight开发框架教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
现有Silverlight程序使用mvvmlight开发框架教程
1)创建Silverlight 应用程序。
2)添加mvvmlight引用,如果使用模板创建,会自动生成引用,而这里我们需要自己添加。
3)添加ViewModels、Locators、Models文件夹。
4)为MainWindow添加ViewModel,在解决方案浏览器中,右键ViewModel文件夹,添加新类,类名称为MainViewModel,如果安装了mvvmlight模板,选择类模板为MvvmViewModel
5)添加类ViewModelLocator,我们叫它ViewModel加载器,在解决方案浏览器中,右键项目名称,添加新类,类名称为ViewModelLocator,如果安装了mvvmlight模板,选择类模
板为MvvmViewModelLocator。
6)打开App.Xaml,先添加ViewModel命名控件引用,然后为ViewModelLocator添加一个全局的资源,app.xaml的内容如下:
x:Class="SilverlightApplication8.App" xmlns="/winfx/2006/xaml/presentation" xmlns:x="/winfx/2006/xaml" xmlns:d= "/expression/blend/2008" xmlns:mc="/markup-compatibility/2006" xmlns:vm="clr-namespace:SilverlightApplication8.Locators" mc:Ignorable="d" >
7)打开MainWindow.xaml文件,首先为MainWindow设置DataContext为MainViewModel,MainWindow.xaml代码如下:
x:Class="SilverlightApplication8.MainPage" xmlns="/winfx/2006/xaml/presentation" xmlns:x="/winfx/2006/xaml" xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Control s.Navigation" xmlns:uriMapper="clr-namespace:System.Windows.Navigation;assembly=System.Windows.Contro ls.Navigation" xmlns:d="/expression/blend/2008" xmlns:mc="/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480" DataContext= "{Binding Main,Source={StaticResource Locator}}"> 。。。。。。 8)我们把MainPage的HyperlinkButton更改为Command绑定,通过传递参数的方式导航,这么做的好处可以把不同模块按需加载。MainViewModel中增加了一个LoadUrlCommand 的RelayCommand命令。 MainViewModel.cs的代码: using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Messaging; using System.Windows.Input; using mand; using System.Windows; using System; namespace SilverlightApplication8.ViewModels { /// /// This class contains properties that a View can data bind to. /// ///Use the mvvminpcsnippet to add bindable properties to this ViewModel. /// /// /// See http://www.galasoft.ch/mvvm/getstarted /// /// public class MainViewModel : ViewModelBase { private static MainPage root; /// /// Initializes a new instance of the MainViewModel class. /// public MainViewModel() { HomeNav = new Nav{ NavigateUri="/Home", Package="SilverlightApplication8.xap" }; //作为复杂对象绑定前台 LoadUrlCommand = new RelayCommand LoadNavUrlCommand = new RelayCommand //注册一个token为LoadUrl的消息 Messenger.Default.Register { root = App.Current.RootVisual as MainPage; root.ContentFrame.Navigate(new Uri(msg, UriKind.Relative)); }); Messenger.Default.Register { root = App.Current.RootVisual as MainPage;