(04).NET MAUI实战 MVVM

1.概要

本章将讲解如何在MAUI中使用简单的MVVM模式开发“ListView”内容的增删功能,MVVM在MAUI中也同样适用。

bf05dcab0d3680ae7e3d3167661009f3.png

Microsoft.Toolkit.Mvvm

在学习之前我们先了解一个nuget包,它可以帮助我们省去一些代码的开发时间。包Microsoft.Toolkit.Mvvm (aka MVVM Toolkit) 是一个现代、快速、模块化的 MVVM 库。此包面向 .NET Standard,以便在任何应用平台上使用它:UWP、WinForms、WPF、Xamarin、Uno 等;在任何运行时:.NET Native、.NET Core、.NET Framework或 Mono。它在所有上运行。在所有情况下,API 图面都是相同的,因此非常适合生成共享库。在解决方案资源管理器中,右键单击项目,然后选择“管理NuGet包”。搜索 Microsoft.Toolkit。Mvvm 并安装它。

fc132db9fb3f93880cd996660c9255fe.png

2.详细内容

Project

5b260031cbde1833c8bc8b0f002c96e4.png

View
<Grid RowDefinitions="500,50">
   <ListView ItemsSource="{Binding Temps}"/>
     <StackLayout Grid.Row="1">
        <Button WidthRequest="100" HeightRequest="25" Text="add" Command="{Binding AddCommand}"/>
        <Button WidthRequest="100" HeightRequest="25" Text="add" Command="{Binding DeleteCommand}"/>
     </StackLayout>
</Grid>
ViewModel
//ViewModel需继承
    public class MainViewModel : ObservableObject
    {
        private string _test;
        private ObservableCollection<MainModel> _temps;
        private ICommand addCommand;
        private ICommand deleteCommand;

        //数据通知集合
        public ObservableCollection<MainModel> Temps { get => _temps; set => _temps = value; }

        //命令
        public ICommand AddCommand { get => addCommand ?? (addCommand = new RelayCommand(AddCallback));}
        public ICommand DeleteCommand { get => deleteCommand ?? (deleteCommand = new RelayCommand(DeleteCallback));  }

        //数据通知字段
        public string Test { get => _test; set => SetProperty(ref _test , value); }

        public MainViewModel() 
        {
            //初始化
            Temps = new ObservableCollection<MainModel>();
            Temps.Add(new MainModel { Name = "zhangsan" });
            Temps.Add(new MainModel { Name = "zhangsan" });
        }

        //命令执行内容
        private void AddCallback()
        {
            Temps.Add(new MainModel { Name = DateTime.Now.ToString() });
        }

        private void DeleteCallback()
        {
            Temps.RemoveAt(0);
        }
    }
Model
public class MainModel
{
    public string Name { get; set; }

    public override string ToString()
    {
        return Name;
    }
}
Run

7a904b30e85f9889efcfc47e87b820ee.png

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值