详解wpf prism mvvm中的ViewModels完整代码
时间: 2023-11-22 10:56:58 浏览: 139
WPF Prism MVVM 中 ViewModel 的完整代码会依赖于具体的应用程序需求和数据模型设计。以下是一个简单的示例,用于展示如何实现 ViewModel。
```csharp
using Prism.Commands;
using Prism.Mvvm;
using System.Collections.ObjectModel;
namespace MyApp.ViewModels
{
public class MainViewModel : BindableBase
{
private ObservableCollection<string> _items = new ObservableCollection<string>();
public ObservableCollection<string> Items
{
get { return _items; }
set { SetProperty(ref _items, value); }
}
private string _selectedItem;
public string SelectedItem
{
get { return _selectedItem; }
set { SetProperty(ref _selectedItem, value); }
}
public DelegateCommand AddItemCommand { get; private set; }
public DelegateCommand RemoveItemCommand { get; private set; }
public MainViewModel()
{
AddItemCommand = new DelegateCommand(AddItem);
RemoveItemCommand = new DelegateCommand(RemoveItem);
}
private void AddItem()
{
Items.Add("New Item");
}
private void RemoveItem()
{
Items.Remove(SelectedItem);
}
}
}
```
在这个示例中,我们创建了一个名为 MainViewModel 的 ViewModel,其中包含一个 ObservableCollection 对象和两个 DelegateCommand 对象。Items 属性表示了一个字符串的集合,SelectedItem 属性表示选择的字符串。AddItemCommand 是一个添加字符串到集合的命令,RemoveItemCommand 是一个从集合中删除字符串的命令。这些命令都与 AddItem 和 RemoveItem 方法相关联。
此外,我们还继承了 Prism 的 BindableBase 类,这个类实现了 INotifyPropertyChanged 接口,用于通知 View 层数据发生了变化。这个基类提供了 SetProperty 方法,用于设置属性值并触发 PropertyChanged 事件。
在实际的应用中,ViewModels 的代码会更加复杂,可能需要包含多个数据模型和逻辑处理。但是,基本的原则是 ViewModel 应该与具体的 View 实现无关,View 可以随意更改,而 ViewModel 应该尽可能地保持不变。这样可以使得代码更加可维护和可扩展。
阅读全文