[Prism] MVVM模式的数据绑定详解

一、Prism框架包安装

        首先Nuget安装prism框架包,然后修改App类。修改App继承PrismApplication,并且实现PrismApplication中的两个虚方法。同时修改xaml文件,添加命名空间,xmlns:prism=" " ,修改Application为prism:PrismApplication。

二、DataContext绑定

        Prism提供自动的数据绑定功能,只需要复合相应的命名规范。其中对于的View页面,需要放在Views文件夹下,并且命名为NameView,对于的ViewModel需要放在ViewModels文件夹下,命名为NameViewModel,并且需要继承 Bindablebase基类。然后在XAML文件中添加:

prism:ViewModelLocator.AutoWireViewModel="True"

         此时DataContext自动与new NameViewModel绑定

        Prism的MVVM模式提供一下几种绑定的功能:

                属性绑定,前端的空间的依赖项属性与后端绑定。

                命令绑定,按钮或者其他能够执行命令的空间与后端的命令的绑定。

                命令参数绑定,像后端命令传递参数

                复合绑定

三、属性绑定

        以TextBlock为例,其中的Text属性的绑定为 Text="{Binding Name}"。Text与后台的Name属性绑定

private string name;
public string Name
{
    get
    {
        return name;
    }
    set
    {
        SetProperty(ref name,value)
    }
}

        这里的SetProperty方法是Bindablebase类中的,这个类实现了INotifyPropertyChanged基类。还有相应的泛型方法。实现了事件通知的功能。当属性修改之后,相应的前台属性也会修改

四、命令绑定

        命令绑定的形式 Command="{Binding Click_Command}"。对应的后台代码是:

public DelegateCommand Clicl_Command
{
    get => return new DelegateCommand( Action action );
}

        DelegateCommand 的创建形式有直接创建,在构造函数内添加一个私有的执行方法,这个方法就是执行Command的方法体。或者是创建的时候,写一个Lambda表达式。

        当需要传递参数时,前端代码,添加CommandParameter="{Binding ElementName=xName}"绑定一个前端的控件名。可向后端传递相应的控件参数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF Prism 是一个用于开发 WPF 应用程序的框架,它提供了一种基于 MVVM(Model-View-ViewModel)的开发模式。在这种模式下,视图(View)是用户界面的显示层,模型(Model)是数据和业务逻辑的层,而视图模型(ViewModel)则是连接视图和模型的桥梁。ViewModels 代码就是指这个视图模型层的代码。 在 Prism 中,ViewModels 代码通常包含以下部分: 1. 属性:ViewModels 中的属性通常对应着视图中的 UI 元素,例如,一个文本框的文本内容、一个按钮的可用性等。这些属性通常会实现 INotifyPropertyChanged 接口,以便在属性值发生变化时能够通知视图更新。例如: ```csharp private string _name; public string Name { get { return _name; } set { if (_name != value) { _name = value; OnPropertyChanged(nameof(Name)); } } } ``` 2. 命令:ViewModels 中的命令通常对应着视图中的按钮或其他用户操作能触发的动作。这些命令通常会实现 ICommand 接口,并且会在执行时调用模型层的方法来完成相应的业务逻辑。例如: ```csharp public ICommand SaveCommand { get; private set; } private void InitializeCommands() { SaveCommand = new DelegateCommand(Save, CanSave); } private void Save() { // 调用模型层的保存方法 } private bool CanSave() { // 根据当前状态判断命令是否可用 } ``` 3. 方法:ViewModels 中的方法通常用于处理视图中的事件或其他业务逻辑。这些方法可能会调用模型层的方法来获取或更新数据,并且会将更新后的数据通知给视图。例如: ```csharp private void LoadData() { // 调用模型层的方法获取数据 var data = _model.GetData(); // 更新属性值 Name = data.Name; Age = data.Age; } ``` 4. 注册事件:ViewModels 中的事件通常用于在视图和模型层之间传递消息。这些事件通常会在需要时被订阅,并且会在事件发生时触发相应的处理程序。例如: ```csharp public event EventHandler<DataChangedEventArgs> DataChanged; private void OnDataChanged(DataChangedEventArgs e) { DataChanged?.Invoke(this, e); } private void UpdateData() { // 调用模型层的方法更新数据 // 触发事件通知视图更新 OnDataChanged(new DataChangedEventArgs()); } ``` 以上就是 WPF Prism MVVM 中的 ViewModels 代码的主要内容。通过 ViewModel 层的实现,我们可以将视图和模型层完全解耦,从而达到更好的代码复用和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值