在WPF和MVVM中构建可重用的CRUD控件

时间:2012-01-20 18:49:21

标签: wpf mvvm prism

我正在构建一个WPF Prism MVVM应用程序。

此应用程序将包含许多CRUD窗口。

我希望优化该窗口的功能(并减少生成的代码量)。

我已经使用了一种方法,我创建了一个具有默认功能的“母版页”,其中包含一个保留区域,用于“注入”可能属于特定实体的不同子控件。我正在尝试在this question中的WPF中学习如何执行此操作。

但我想知道的是:使用WPF和MVVM(或控件)实现此目的的模式是什么?

2 个答案:

答案 0 :(得分:2)

构建一个所有CRUD ViewModel将继承的接口,让您的通用ViewModel使用该接口执行CRUD操作

以下是界面和类的外观示例:

// Generic interface
public interface IGenericViewModel
{
    bool Add();
    bool Save();
    bool Delete();
}

// Generic CRUD ViewModel
public class GenericViewModel
{
    public IGenericViewModel ObjectViewModel { get; set; }

    public RelayCommand AddCommand { get ; }
    public RelayCommand SaveCommand { get ; }
    public RelayCommand DeleteCommand { get ; }

    void Add()
    {
        ObjectViewModel.Add();
    }

    void Save()
    {
        ObjectViewModel.Save();
    }

    void Delete()
    {
        ObjectViewModel.Delete();
    }
}

// Specific object ViewModel used by generic CRUD ViewModel
public class CustomerViewModel : ViewModelBase, IGenericViewModel
{

    bool IGenericViewModel.Add()
    {
        // Add logic
    }

    bool IGenericViewModel.Save()
    {
        // Save logic
    }

    bool IGenericViewModel.Delete()
    {
        // Delete object
    }

}

答案 1 :(得分:-1)

查看此通用控件WPFCrudControl,可能对您有用。

基于MVVM模式实现的通用WPF CrudControl。它为简单的CRUD操作(添加,编辑,删除,验证,列表排序,分页和搜索)提供了巨大的生产力提升。该控件抽象了UI和业务逻辑,因此它需要相对最少的编码工作,同时保持定制其行为的可能性。