Два вопроса здесь.
В моем представлении есть кнопка «Закрыть», при нажатии которой окно должно закрываться. Я обработал это следующим образом: кнопка в моем представлении привязывается к команде, определенной в модели представления представления, которая при запуске запускает следующее:
private void Exit()
{
var regionManager = Container.Resolve<IRegionManager>();
MyView existingView = regionManager.Regions["MyWindowRegion"].GetView("MyView") as MyView;
if (existingView != null)
{
regionManager.Regions["MyWindowRegion"].Remove(existingView);
}
}
Это нормально? Знает ли модель представления слишком много о представлении (например, его имя и тип)?
Как и в первом вопросе, на панели инструментов моего модуля, если я нажму кнопку «Запустить модуль», он создаст / отобразит представление. Я сделал так, чтобы, если вид уже был виден, вместо того, чтобы создавать его снова, модель вида просто сфокусировала бы существующую:
private void LaunchMyView()
{
var regionManager = Container.Resolve<IRegionManager>();
MyView existingView = regionManager.Regions["MyWindowRegion"].GetView("MyView") as MyView;
if (existingView == null)
{
MyView view = Container.Resolve<MyView>();
view.Title = "MyView Title";
regionManager.Regions["MyWindowRegion"].Add(view, "MyView");
}
else
{
regionManager.Regions["MyWindowRegion"].Activate(existingView);
}
}
Тот же вопрос. Модель представления знает слишком много о представлении?
Кстати, я использую WindowsRegionAdapter для обработки создания нового представления.
Спасибо.