Два одновременных просмотра с одной ViewModel

1

Я получаю смешанные ответы, просматривая другие сообщения, но говорю, что у меня есть одна основная ViewModel, которая обрабатывает две связанные модели данных

public partial class Product
{
    public string ProductName { get; set; }
    public int TemplateID { get; set; }
    public virtual Template Template { get; set; }
}

public Template()
{
    this.Products = new ObservableCollection<Product>();
}
public int TemplateID { get; set; }
public string TemplateName { get; set; }
public virtual ObservableCollection<Product> Products { get; set; }
}

В настоящее время есть две отдельные модели Views и ViewModels, одна из которых показывает все данные "byTemplates", а другая - все данные "byProducts". Оба разрешают операции CRUD. Чтобы избавиться от дубликатов кодов и команд, я хочу объединить эти два вида в один.

Должен ли я по-прежнему требовать две ViewModels? Могу ли я работать с одним экземпляром данных? (поэтому, если я пошел и вставил что-то под представлением "ByTemplates" и переключился на "ByProducts" перед сохранением в базе данных, я все равно увижу все изменения, которые у меня есть?

РЕДАКТИРОВАТЬ:

В настоящее время я использую вкладки, чтобы облегчить это. Мои взгляды здесь:

По вкладке продукта Изображение 174551

Вкладка "Шаблоны" (пользователь может выбрать шаблон, а "Ассоциированные продукты" ListView покажет все prodcucts, связанные с "шаблоном") Изображение 174551

  • 0
    Не могли бы вы быть более точным в описании взглядов? Вы имеете в виду, что они имеют одинаковую структуру, но не отображают одинаковые данные? Возможно, вы могли бы создать UserControl способный управлять обоими, но трудно сказать без дополнительной информации.
  • 0
    Смотрите мое редактирование. Спасибо
Показать ещё 2 комментария
Теги:
wpf
mvvm

2 ответа

0

Я хотел бы использовать единую модель просмотра, где оба представления взаимосвязаны. Примером может быть подробное и сводное представление одних и тех же данных.

В описываемом вами сценарии, если оба представления используют одни и те же данные и методы, то уверены, сохраняйте их как одну модель. Если, однако, вы выполняете параметризацию каждой команды для работы над подмножеством, то кажется, что разделение будет лучше - я бы хотел сделать это, основывая общие элементы для улучшения повторного использования и обслуживания, а затем расширяя их до определенных моделей просмотра для каждого подмножества. Это также улучшает расширение.

0

То, что вы говорите, в значительной степени возможно, viewmodel может содержать несколько моделей, объединенных вместе, как одну родительскую модель просмотра, и она предназначена для просмотра всех свойств, с которыми она заинтересована в привязке. Наличие двух отдельных представлений или нет - это обсуждение дизайна, но оно не является обязательным. Для этого не требуется одна модель просмотра. Цель иметь модель просмотра - избавиться от прямой зависимости от конкретной бизнес-модели и объединить и сформировать данные в соответствии с потребностями пользовательского интерфейса. Так что да, вы можете делать то, что вы намереваетесь сделать. Пожалуйста, поделитесь деталями xaml и существующей моделью /viewmodel, если вы хотите подробно рассказать о том, как это сделать, иначе вы все настроены.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню