В Составном WPF (Призма), каково различие между IRegion. Добавьте и IRegionManager. RegisterViewWithRegion?

Чем больше кодовая база, тем больше удобочитаемости крайне важно. Попытка понять некоторую крошечную функцию не так плоха. (Тем более, что Имя метода в примере дает Вам ключ к разгадке.) Не настолько большой для некоторой эпической части кода uber, записанного гением одиночки, который просто вышел из кодирования, потому что он наконец видел вершину сложности своей способности и это - то, что он просто записал для Вас, и Вы никогда не будете понимать его.

14
задан Metro Smurf 14 September 2009 в 17:56
поделиться

2 ответа

Разница в том, кто отвечает за создание представления. В сценарии IRegion.Add (также называемом Внедрение представления ) вы несете ответственность за предварительное создание экземпляра представления. В другом сценарии с RegisterViewWithRegion (также называемым View Discovery ) диспетчер регионов создает экземпляр самого представления.

Есть некоторые технические причины, по которым вы захотите сделать то или иное . Например

  • у вас был более сложный способ создания представлений (возможно, вы хотите создать представление и его ViewModel и объединить их, установив свойство DataContext самостоятельно), вам нужно будет использовать View Injection
  • , если вы возьмете Преимущество области действия, вы будете вынуждены использовать внедрение представления.

Соответствующая документация: Для компоновки представлений (включая внедрение представлений и обнаружение представлений и обсуждение подходов View-First или View-Presenter-First): http://msdn.microsoft.com/en-us/library/dd458944.aspx

Также есть действительно удобный раздел «когда использовать каждый». Вот выдержка из документации:

  • Явный или программный контроль над тем, когда создается представление и отображается, или когда вам нужно удалить представление из региона, для Например, в результате применения логика.
  • Для отображения нескольких экземпляров одних и тех же представлений в области, где каждый экземпляр представления привязан к разные данные.
  • Чтобы контролировать, какой экземпляр региона добавляется вид (для например, если вы хотите добавить просмотр сведений о клиенте для конкретного регион детализации клиента). Обратите внимание, что этот сценарий требует ограниченного регионов, описанных далее в этом тема.

Надеюсь, это поможет.

15
ответ дан 1 December 2019 в 13:59
поделиться

RegisterViewWithRegion вызывает событие OnContentRegistered, но, конечно, этого не может быть в зависимости от вашего DI

1
ответ дан 1 December 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: