MVVMLight的使用方法
来源:互联网 发布:股票软件源码下载 编辑:程序博客网 时间:2024/05/22 14:44
MVVMLight的使用方法
ViewModel 类中我们可以做许多的事情,可以给页面绑定的某个字段初始值,也可以初始绑定的事件等操作。如下所示:
public class 要用的ViewModel: ViewModelBase
1.
l
l
如果在页面中直接用,首先要做的事情就是命名空间的引入,我们一定要将ViewModel引入到我们的页面中,和正常引入类是一样的 :
xmlns:vm="clr-namespace:项目.命名空间A.命名空间B;assembly=项目.命名空间A"
然后我们就要设定当前页的资源,
<navigation:Page.Resources>
</navigation:Page.Resources>
很好,这样我们就将ViewModel引入到了该页面中,同时我们可以通过Key “vmTest” 来进行绑定了,如果单个的字段,则可以通过简单的绑定来实现,如:
从这里面就可看出 :在操作集合的时候,使用的是ObservableCollection ,可以值变通知的,对于绑定的集合来说,我们要的目的通常是现实或者从集合中选择某条,因此我们设置一个用于获取集合中选则的项。如果是DataGrid等,虽然没有选中也可以采用类似的方法进行接收。
2.
在MVVMLight中,如果给某个控件绑定某些事件也是挺容易的事情,里面有一个RelayCommand,它实现了ICommand接口,因此我们在使用的时候可以轻松的实现命令的绑定,例如:
<Button x:Name="OKButton" Content="Save" Width="75" Height="23" Margin="10,0,0,0"Command="{Binding
那么Command命令在VM中又是怎样实现的呢:
如下所示:
Public RealyCommand LoginTestCommand
{
private set;
get;
}
这样就可以了??
我们只是定义了通知,还没有具体实现呢:
Private void LoginTest()
{
// 实现
if(UserInfo.UserName!=null && UserInfo.Password!=null)
}
额!我们什么时候创建的RealyCommand 呢?当然在VM的构造函数中实现的了,如下所示:
this. LoginTestCommand = new RelayCommand(LoginTest);
页面转跳
如果不用MVVM框架的时候,我们会在后台的代码中直接写转跳的路径,用了MVVM就不能用这种办法了吧,那么我们用什么通知View 来进行页面转跳呢??? “通知”
在ViewModel中有一个属性,用来传递可以转跳的NativationContext ,然后再转跳,有点太恶心了。。。。
那么还有什么东西呢?那么看一下MVVMLight中提供的一些基础方法和属性吧。。。
哦,不小心发现了下面的 类。。。。。继承自MessageBase,哦,消息,这是一个好动西。。。
里面有NotificationMessage的方法,而且 还有不同的形式,看来有办法了,如果我们将要转跳的页面用消息的形式发个View,那么View 不就可以进行页面转跳了,如果页面在有什么Frame之类的,那也简单吧,sender帮到我们Frame上就可以了,如果页面之间传递实体呢,还有个target ,这样就可以根据自己的需求定制页面的转跳了。
下面看一下Message
Messenger:用于ViewModel和View之间传递的消息,注意系统的GalaSoft.MvvmLight.Messaging命名空间下已经预定义了一些常使用的消息处理类,
如DialogMessage、NotificationMessageActio
使用的时候先注册一个消息:
在要响应的view中进行注册,也可以在其他的地方进行注册,不过要传递要注册的view,将this改成那个view
Messenger.Default.Register<NotificationMessage>(this, "MainPageNavigation", RedirectNavigationPage);
消息要做的事情:
在ViewModel中我们发送消息:
Messenger.Default.Send(new NotificationMessage("/先学习/xxx"),"MainPageNavigation");
这里面的其实就是在页面中定义好一个可以进行页面转跳的方法,里面转跳就和正常的一样了,然后通过消息来执行这个方法就是了。
- MVVMLight的使用方法
- MVVMLight的使用方法
- MVVMLight的Messenger
- MVVMLight
- MVVMLight 实现指定Frame控件的导航
- 使用MVVMlight的消息的时候一定要cleanup
- MVVM模式结合MVVMlight框架的应用(20)
- Win10开发:构建基于MVVMLight框架的Win10项目
- 利刃 MVVMLight 4:绑定和绑定的各种使用场景
- 利刃 MVVMLight 4:绑定和绑定的各种使用场景
- 在MvvmLight中View和ViewModel的绑定
- MVVMLight+WPF
- MVVM:MVVM、MVVMLight、MVVMLight Toolkit之我见
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- [MVVM]04-MVVMLight不支持命令的控件把事件转换成命令
- JVM内存模型及垃圾回收机制
- 关于线性回归:梯度下降和正规方程(gradient descend、normal equation)
- twisted-credentials
- artDialog使用
- linux虚拟机ping 总显示From 192.168.4.211: icmp_seq=2 Redirect Network(New nexthop: 192.168.4.1)
- MVVMLight的使用方法
- leetcode 209: Minimum Size Subarray Sum
- ListView详解之三
- VPS与云主机
- poj 2289 Jamie's Contact Groups 【二分 + 最大流】
- 找工作---面试3
- 利用矩阵求斐波那契数列
- mysql创建表
- Fcitx输入法的安装