首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >(04).NET MAUI实战 MVVM

(04).NET MAUI实战 MVVM

作者头像
JusterZhu
发布2022-12-07 20:32:15
发布2022-12-07 20:32:15
1.7K0
举报
文章被收录于专栏:JusterZhuJusterZhu

1.概要

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

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 并安装它。

2.详细内容

Project
View
代码语言:javascript
复制
<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
代码语言:javascript
复制
    //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
代码语言:javascript
复制
public class MainModel
{
    public string Name { get; set; }

    public override string ToString()
    {
        return Name;
    }
}
Run
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JusterZhu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.概要
    • Microsoft.Toolkit.Mvvm
  • 2.详细内容
    • Project
    • View
    • ViewModel
    • Model
    • Run
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档