Я вижу, что два метода, которые будут работать для этого сценария, будут использовать две разные команды, как вы заявили, каждый из которых будет вызывать Window
по-своему.
Первый вариант будет состоять в том, чтобы создать либо два конструктора для Window
(один для добавления, а другой для обновления) , либо просто создать тот, который передается в значение enum в качестве параметра.
public void Window2(DisplayMode mode)
Где DisplayMode
- это enum
с двумя значениями (Add
и Update
)
или
public void Window2() // The default 'Add' window
{
}
public void Window2(ModelObject instance) // The 'Update' window
{
}
Второй вариант должен был бы сделать конструктор для Window
private и создать статические методы в классе, чтобы создать экземпляр Window и отобразить его для пользователя.
Это можно использовать как
Window2.UpdateItem(selectedItem)
Каждый из этих методов устанавливает DataContext для экземпляра окна на объект, который вы хотите отредактировать (либо на новый экземпляр объекта, либо на экземпляр, который был передан конструктору)