mvvm框架搭建之---关联View和ViewModel的常用方式

一、说明

1)本文和后续文章以wpf应用程序为例说明

2)  本文和后续文章介绍Community_Toolkit_mvvm工具:首先在工程中打开Nuget下载   Community.Toolkit.Mvvm相关程序集,然后引用相关命名空间

二、关联方式

1)控件的DataContext属性相当于数据容器,所以在 View.Xaml.cs的构造函数中直接实例化ViewModel.cs类并赋值给View的DataContext属性即可。如下:

​

        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new MainViewModel();
        }
​

2) 首先在对应的View中引用ViewModel文件的命名空间 。如:

 xmlns:local1="clr- namespace:WpfApp1.ViewModel"


然后在View的资源字典(<Windows.Resource>)中引用ViewModel类,并设置资源关键字。如:

<local1:MainWindowViewModel x:Key="InteractionTriggers"></local1:MainWindowViewModel>

最后在用到ViewModel中该类的属性或方法的地方绑定上面的资源关键字即可。总结就是"引用"和"绑定"。如:

CallMethodAction TargetObject="{Binding Source={StaticResource ResourceKey=InteractionTriggers}}"

3) 类似于第1种方法:在View的Xaml语句中将Window数据上下文属性Window.DataContext设置为ViewModel的实例,然后在运用的地方绑定其中的属性。如:

<Window.DataContext><local:MyViewModel /></Window.DataContext>

4)  类似于第3中方法:因为DataContext是所有控件都具备的依赖属性。除非在控件上显示设置,否则用于解析绑定数据的上下文将继承于父控件,因此通常将ViewModel类实例赋值给整个window的DataContext属性。所以在某控件设置,就可以绑定该控件.如:

<StatckPanel.DataContext><local:MyViewModel /></StatckPanel.DataContext>

(注意不能采用<StatckPanel  DataContext="local:MyViewModel "></StatckPanel>形式设置,因为DataContext不是StackPanel的内容属性)。因此其子控件就可以绑定ViewModel中的属性、命令:

<StatckPanel>
            <TextBox Text="{Binding Name}" />
            <Button Command="{Binding SaveCommand}" Content="Save" />
</StatckPanel>

三、总结

         在View中关联ViewModel类实例,常用的两种方法:1)View中窗体或控件的DataContext属性赋ViewModel类的实例;2)引用ViewModel类的命名空间,在View窗体的资源字典中引用ViewModel类并设置资源关键字
                                                     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值