Я не уверен, что выполняю все ваши требования, но примерно так я бы подошел к такой задаче:
Создание представления и модели представления в классе А.
Установите любые параметры, которые вы хотите на вашей модели представления. Либо как свойства, либо с помощью инжектора конструктора.
Установить текстовый вид представления для модели представления.
Все, что вам нужно связать, должно связываться между ними.
Показать диалог просмотра.
Пользователь редактирует представление и сохраняет его в свойствах модели представления.
Они заканчивают редактирование, и вы затем работаете со свойствами viewmodel. Возможно, одна из них - модель, которую вы упоминаете. Может быть, модель создается экземпляром модели для получения данных или классом A, если это более удобно. В последнем случае вам, вероятно, придется передать эту модель модели представления.
Учитывая вышесказанное.
Немного приблизительный код:
public class ClassA
{
MyDialogViewModel vm = new MyDialogViewModel { Name = "X", Roll = "Y" };
MyDialog dlg = new MyDialog();
dlg.ShowDialog();
var name = vm.Name;
var roll = vm.roll;
// Do something to persist your data as necessary. Either here or in a model within the viewmodel
}
Name и Roll предположительно связываются с некоторыми текстовыми полями. Свойства текста в представлении или некоторые другие.
Если это так же просто, как получить два строковых значения, тогда я не вижу никакого преимущества в том, чтобы вообще иметь модель. С другой стороны, если обработка более сложна, то, конечно, модель представления может создать экземпляр модели.
MyDialogViewModel должен реализовывать inotifypropertychanged, и все, что вам нужно связать, должно быть публичным свойством. Не уверен, что вам понадобится уведомление об изменении собственности, но всегда применяйте его. При желании поднять свойство изменилось из установщиков свойств.