ПРИЗМА: Есть ли способ для View узнать, для какого региона он создается? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть представление, которое зарегистрировано в нескольких разных областях приложения, каждый раз с помощью вызова типа

regionManager.RegisterViewWithRegion(regionName, viewType);

Затем он создается как-то в Prism, когда это необходимо. Можно ли определить в конструкторе класса представления, в какую область будет добавлено представление?

Я пытаюсь повторно использовать один и тот же вид в нескольких похожих ситуациях, когда визуальные элементы графического интерфейса будут одинаковыми, но, например, модель представления за этим видом будет создаваться по-разному. Я мог бы ожидать, что это будет странной архитектурной особенностью, но я довольно ограничен инфраструктурой приложения большого размера. Я могу повлиять на код, который регистрирует представления, поэтому, если есть способ передать некоторые метаданные, сопровождающие каждую регистрацию, которые могут быть впоследствии получены во время создания экземпляра, я мог бы это сделать.

1 Ответ

0 голосов
/ 04 октября 2019

Можно ли определить в конструкторе класса представления, в какую область будет добавлено представление?

Ни один из известных мне по умолчанию RegionNavigationContentLoader.

При этом вы не обязаны использовать реализацию по умолчанию, и IRegionNavigationContentLoader.CreateContent получает полный NavigationContent, поэтому вы должны быть в состоянии определить «область влияния модели представления» в качестве цели и вручную создать правильную модель представления (вместо того, чтобы полагаться на ViewModelLocator) для представления.

В качестве альтернативы, перейти к представлениюСначала смоделируйте модель и поместите правильную модель представления в каждом регионе, в то время как они разделяют одно и то же представление. По общему признанию, это может быть большим изменением в вашем приложении, но, возможно, более чистым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...