1. Prism
public class MyViewModel : BindableBase
{
private int _counter;
public int Counter
{
get { return _counter; }
set { SetProperty(ref _counter, value); }
}
public DelegateCommand IncrementCommand { get; private set; }
public MyViewModel()
{
IncrementCommand = new DelegateCommand(OnIncrementExecute, CanIncrementExecute);
}
private void OnIncrementExecute()
{
Counter++;
}
private bool CanIncrementExecute() => Counter < 10;
}
支持模块化和插件化,适合大型复杂应用程序。
包含事件聚合器,方便组件间通信。
支持导航和区域管理。
学习曲线较陡峭。
相对较重,可能不适合小型项目。
大型企业级应用程序。
需要高度模块化和可扩展性的项目。
2. MVVM Light
public class MainViewModel : ViewModelBase
{
private string _name;
public string Name
{
get { return _name; }
set { Set(ref _name, value); }
}
public RelayCommand SaveCommand { get; }
public MainViewModel()
{
SaveCommand = new RelayCommand(Save, CanSave);
}
private void Save()
{
// Save logic here
}
private bool CanSave()
{
return !string.IsNullOrEmpty(Name);
}
}
轻量级,易于上手。
提供了MESSENGER类,方便不同ViewModel之间的通信。
功能相对较少,对于复杂项目可能不够用。
中小型项目。
快速开发和原型制作。
3. CommunityToolkit.Mvvm
public class MainPageViewModel : ObservableObject
{
private string _status;
public string Status
{
get => _status;
set => SetProperty(ref _status, value);
}
public IRelayCommand LoadDataCommand => new RelayCommand(LoadData);
private void LoadData()
{
Status = "Data loaded";
}
}
由微软支持,定期更新。
提供了丰富的MVVM组件和工具。
相对较新,社区资源和文档可能不如其他框架丰富。
适用于各种规模的项目。
特别适合需要与Windows社区工具包集成的项目。
往期精品推荐: