Jason's blog
We have so many needs in our life, but at the end of the day, all we need is...to be needed.
    安装完成后,我们可以直接通过VS2010或blend4创建基于MVVM Light模板的项目了,通过模板创建的初始项目已经有一个简单的实例,我们先研究他。
    相比一般的wp7项目,它默认创建了Model、ViewModel两个文件夹,ViewModel文件夹中有两个简单代码文件。具体内容后面再说。
    默认创建的MainPage.xaml页面看到的时候是个空白页面,上面没有任何内容。然而却有个错误提示。(很奇怪,刚创建就有错误提示)。
    这时候编译一下,发现更奇怪的事情发生了,MainPage.xaml页面出了一些内容。(哈哈,我这个外行很见怪)。
    
    查过相关资料后,发现这个MVVM Light模板其实隐藏了很多东西,它帮我们创建了,但我们还是需要了解下的:
    1、App.xaml中添加了针对ViewModel命名空间的引用,就是在Application段添加了
            xmlns:vm="clr-namespace:MvvmLight6.ViewModel"
        这样一段,xmlns是xml命名空间的意思。
    2、另外,在<Application.Resources>段中,注册了这样一个资源:
                    <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
        这里的vm是前面定义的命名空间,ViewModelLocator是命名空间中的类,标记其Key为Locator,并确定其为数据源。
        这里还有一种写法,就是不在第一步声明命名空间,直接在这里写资源:
                    <vm:ViewModelLocator xmlns:vm="clr-namespace:MvvmLight6.ViewModel" x:Key="Locator" />
        当然,也可以在具体页面中引用资源。
    3、下一步就是在页面中绑定资源了
                <phone:PhoneApplicationPage
                           ……
                            DataContext="{Binding Main, Source={StaticResource Locator}}"
                            ……
                  >
          这里的Main是Locator(也就是ViewModelLocator 类)中的一个属性,查代码可以看到它是一个MainViewModel对象。
    4、这时候页面中所有的控件都可以直接使用Main中的属性进行绑定,默认代码可见:
        <TextBlock x:Name="ApplicationTitle"
                       Text="{Binding ApplicationTitle}"
                       Style="{StaticResource PhoneTextNormalStyle}" />
        绑定的写法就是中括号中直接写个Binding,后面填写对应的属性名ApplicationTitle。这就是我在文章开头所看到的闹鬼事件。在编译前,这些资源还不存在。编译之后,这些资源就可以正常绑定了。
了解了前面这4方面的内容,对MVVM应该已经有一个比较清晰的印象了。不过这只是皮毛,事件的绑定还没出现呢。
 
 
 
 
 
 


通过 Wiz 发布


posted on 2011-04-27 15:21  Jason .Z  阅读(726)  评论(0编辑  收藏  举报