Използвам примера от Джош Смит. Той има WorkspaceViewModel, който показва списък с CustomerViewModel. Той използва един и същ ViewModel за показване на всички клиенти и за редактиране на един единствен клиент.
Това добра практика ли е? Ако имам списък с CustomerViewModels, нямам нужда от SaveCommand или CloseCommand или някакъв флаг IsSelected.
По-добре ли е да имате отделен EditCustomerViewModel? Но как да се справим с неща, свързани с Workspace? Например:
public class Workspace : ViewModel
{
public ICommand CloseCommand;
}
public class AllCustomers : Workspace
{
public ObservableCollection<CustomerViewModel> CustomerViewModels;
}
// Option A (one ViewModel for display and edit):
public class CustomerViewModel : ?
{
public string CustomerName;
public ICommand SaveCommand;
}
Или разделяне:
// Option B:
public class CustomerViewModel : ViewModel
{
public string CustomerName;
}
public class EditCustomerViewModel : Workspace
{
public CustomerViewModel CustomerViewModel;
public ICommand SaveCommand;
}
// Option C (CustomerViewModel does not need CloseCommand but EditCustomerViewModel does):
public class CustomerViewModel : Workspace
{
public string CustomerName;
}
public class EditCustomerViewModel : CustomerViewModel
{
public ICommand SaveCommand;
}
Редактиране: Опитвам се да изясня проблема си. В CustomerViewModel в примера на Джош Смит той има команди за затваряне и запазване на клиент. В AllCustomerView той има GridView, който се свързва с ObservableCollection от CustomerViewModels. Но в GridView и двете команди не са необходими. В GridView мога да игнорирам и двете команди, но това добър дизайн ли е?