Создание многоразовых элементов управления CRUD в WPF и MVVM - PullRequest
1 голос
/ 20 января 2012

Я создаю приложение WPF Prism MVVM.

Это приложение будет содержать множество окон CRUD.

Я хочу оптимизировать функции (и сократить объем производимого кода)эти окна.

Я уже использовал подход, в котором я создал «главную страницу», которая имела функции по умолчанию и содержала зарезервированную область для «внедрения» различных субконтролей, которые могли принадлежать конкретным объектам.Я пытаюсь узнать, как сделать это в WPF в этом вопросе .

Но что я хочу знать: каков шаблон для достижения этой цели с использованием WPF и MVVM (или элемента управления)?

Ответы [ 2 ]

2 голосов
/ 20 января 2012

Создайте интерфейс, от которого будут наследоваться все ваши CRM 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
    }

}
0 голосов
/ 09 декабря 2016

Посмотрите на этот общий элемент управления WPFCrudControl , может быть полезным для вас.

Общий WPF CrudControl, реализованный на основе шаблона MVVM.Это дает огромный прирост производительности для простых операций CRUD (Add, Edit, Delete, Validate, Listing с сортировкой, поиском и поиском).Элемент управления абстрагирует как пользовательский интерфейс, так и бизнес-логику, поэтому он требует относительно минимальных усилий при написании кода, сохраняя при этом возможность настраивать его поведение.

...