Они точно такие же? На мой взгляд, если они точно такие же, вы должны повторно использовать ViewModel. Зачем создавать одни и те же модели представления дважды, функциональность которых в основном одинакова. Однако вы должны быть осторожны, чтобы в конструкторе ViewModel не было вызовов службы, поскольку для всех представлений вам могут не понадобиться одни и те же вызовы службы. В этом случае ваши звонки будут потрачены впустую, даже если вам это не нужно. В таком случае сделайте публичный метод во ViewModel как:
public void DoServiceCallsForViewA()
{
ModelObj.FooA();
}
public void DoServiceCallsForViewB()
{
//your calls for view B
ModelObj.FooB();
}
Тогда, по вашему мнению, вы можете ввести DataContext,
((YourViewModelName)DataContext).DoServiceCallsForViewA();
и вы можете написать:
((YourViewModelName)DataContext).DoServiceCallsForViewB();