Если мне нужно отобразить новое Window
в моем MVVM-приложении, я использую следующий подход:
Сначала у меня есть интерфейс с методом для отображения нового диалога:
internal interface IDialogManager
{
void DisplayData(object data);
}
И такая реализация, как:
internal class DialogManager : IDialogManager
{
public void DisplayData(object data)
{
LotOfDataViewModel lotOfDataViewModel = new LotOfDataViewModel(data);
LotOfDataView lotOfDataView = new LotOfDataView
{
DataContext = lotOfDataViewModel
};
lotOfDataView.ShowDialog();
}
}
LotOfDataViewModel и LotOfDataView - это новый диалог, в котором вы хотите показать свои данные.
В вашей фактической модели представления вы вводите новое свойство, например:
private IDialogManager dialogManager;
private IDialogManager DialogManager
{
get { return dialogManager ?? (dialogManager = new DialogManager()); }
}
И вы можете показать свои большие данные с помощью:
DialogManager.DisplayData(myData);