首页 > 其他分享 >Prism-BindableObject

Prism-BindableObject

时间:2023-07-16 20:14:42浏览次数:29  
标签:return BindableObject propertyName storage value Prism

Prism提供BindableObject作为ViewModel的基类。

个人认为Prism的BindableObject不如CommunityToolkit的ObservableObject功能丰富和强大。如:

  • SetProperty只支持back-field memory Property,不支持non-back-field calculate Property。
  • SetProperty不支持自定义判等器。
  • 不支持Task属性完成时通知。

下面展示BindableObject的源码

public abstract class BindableBase : INotifyPropertyChanged
{
        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
        {
            if (EqualityComparer<T>.Default.Equals(storage, value)) return false;

            storage = value;
            RaisePropertyChanged(propertyName);

            return true;
        }

        protected virtual bool SetProperty<T>(ref T storage, T value, Action onChanged, [CallerMemberName] string propertyName = null)
        {
            if (EqualityComparer<T>.Default.Equals(storage, value)) return false;

            storage = value;
            onChanged?.Invoke();
            RaisePropertyChanged(propertyName);

            return true;
        }

        protected void RaisePropertyChanged([CallerMemberName] string propertyName = null)
        {
            OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
        }

        protected virtual void OnPropertyChanged(PropertyChangedEventArgs args)
        {
            PropertyChanged?.Invoke(this, args);
        }
}

标签:return,BindableObject,propertyName,storage,value,Prism
From: https://www.cnblogs.com/LiuwayLi/p/17558429.html

相关文章

  • wpf的动态Tab的例子,使用Prism
    引用Prism.Core,Prism.Wpf和Prism.Unity修改App.xaml的类型替换为 PrismApplication 修改App.xaml.cs:///<summary>///InteractionlogicforApp.xaml///</summary>publicpartialclassApp:PrismApplication{protectedoverride......
  • WPF+Prism基础教程
    Prism框架介绍Prism是一个用于构建松耦合、可维护和可测试的XAML应用的框架,它支持所有还活着的基于XAML的平台,包括WPF、XamarinForms、WinUI和Uwp、Uno。Prism提供了一组设计模式的实现,这些模式有助于编写结构良好且可维护的XAML应用程序,包括MVVM、依赖项注入、命......
  • GraphPad Prism 9-科研医学数据绘图分析mac/win版
    GraphPadPrism9是一款功能强大、易于使用的科研和医学数据处理软件。它可以帮助研究人员进行数据可视化、统计分析和实验结果解读,提供了广泛的功能和工具,使得数据呈现更直观且易于理解。→→↓↓载GraphPadPrism9mac/win版 Prism9的主要特点之一是其直观的用户界面。软......
  • Prisma 避坑指南!
    环境变量问题datasourcedb{provider="mysql"url=env("DATABASE_URL")}npxprismadbpush默认取.env配置文件,那多环境怎么处理?增加.env.test.env.prod等文件,安装dotenv-cli,执行dotenv-e.env.test--npxprismadbpush来指......
  • Prism导航
    通常,导航意味着某个Control被添加到UI中,与此同时另一个Control被移除。简单跳转新建UserControl,新建ViewModel,VM需要实现INavigationAware注册UserControl到DryIoc容器containerRegistry.RegisterForNavigation<IndexView,IndexViewModel>();在XAML中需要导航......
  • Prism进入视图时导航的三种方式
    Prism导航新建视图UserControl及其ViewModel,被跳转的视图的VM需要实现INavigationAware在App.xaml.cs中注册视图及其ViewModel//App.xaml.cscontainerRegistry.RegisterForNavigation<IndexView,IndexViewModel>();在需要放置导航内容处声明ContentControl及region......
  • Avalonia如何快速使用Prism进行MVVM开发,实现Prism区域导航功能
    新建ViewA和ViewB以及他的ViewModel 创建View和WPF开发是一样的,创建UserControl,注意avalonia里面需要指定DataType的类型。 创建ViewModel,这里面和开发WPF是一模一样的 到App里面取注册Region  到Window里面取写好界面,创建一个Region用于导航 MainWindowVie......
  • Avalonia如何快速使用Prism进行MVVM开发
    Avalonia版本:RC1.1Prism.Avalonia版本:8.1.97.11000-rc1.1创建Avalonia模板  如果没有RC1.1模板的取看下官网文档,更新一下模板的版本GettingStarted-AvaloniaUI 进入App.axaml.cs文件修改,将App的继承由Application改为PrismApplication,实现prism里面的抽象 到......
  • photoprism+rclone搭建
    vps空间小,所以使用onedrive为例作为存储来搭建photoprism主要分为以下几步:使用rclone挂载onedrive部署photoprism获得rclone.conf首先在本地电脑上安装rclone然后运行rcloneconfig参照https://rclone.org/onedrive/进行远程配置然后配置完成后,~/.config/rclone/rcl......
  • Graphpad Prism9.5.1 科学绘图软件 下载安装教程(含Win/Mac)
    软件下载AutodeskFlame2024formac软件介绍AutodeskFlame破解版由是Autodesk公司(译作欧特克)开发的一款高端电影剪辑和特效制作系统。Flame是用于高速合成、高级图形和客户驱动的交互设计的终极视觉特效制作系统。AutodeskFlame提供出色的性能和荣获奥斯卡奖的工具。从......