首先申明,本人是初学者,自己刚开始接触prism框架的时候,一点头绪没有,某站上的网课讲的都差不错,反正我自己也不太能听懂,只能跟着老师敲。后来我感觉其实你把老师讲的那几个知识点的代码分开来写稍微自己归纳一下就会清晰明了一些,本文纯属自己的学习笔记,用自己的大白话讲了一下自己的理解,如有错误欢迎指出。
首先分享一下命令的绑定:(使用DelegateCommand来实现)
步骤:
一、 我们来创建一个Prism模板项目
二、在视图中创建一个按钮,然后用binding 给他绑定一个命令 ShowCmm
<Grid>
<Button Content="我是按钮" Command="{Binding ShowCmm}" Height="30" Width="60" Background="Pink"/>
</Grid>
然后我们来到视图所对应的视图模型中
三、首先写下这样一句代码
public DelegateCommand ShowCmm { get; set; }
这段代码片段定义了一个公共属性 ShowCmm,其类型为 DelegateCommand
我自己的理解就是让你的后端知道ShowCmm这个命令。
四、在构造函数中告诉后端,接受到这个命令时我们应该干嘛:
于是有了这句代码:(在接收到ShowCmm这个命令时 我们执行Show方法。)
ShowCmm = new DelegateCommand(Show);
五、写我们的Show方法:
public void Show()
{
MessageBox.Show("收到命令");
}
结束,运行一下
接下来,我们拓展一下
在输入这个delegatecommand的时候你会发现编译器提示你他还有个泛型,因为,他是可以带一个参数的
我们用刚刚上面的代码做点修改,和刚刚上面的步骤一样,就不细讲了直接放代码:
前端
<Grid>
<Button Content="我是按钮" Command="{Binding ShowCmm}" CommandParameter="我是参数" Height="30" Width="60" Background="Pink"/>
</Grid>
后端
public class MainWindowViewModel : BindableBase
{
public DelegateCommand<string> ShowCmm { get; set; }
public MainWindowViewModel()
{
ShowCmm = new DelegateCommand<string>(Show);
}
public void Show(string p)
{
MessageBox.Show($"收到命令:{p}");
}
}