Каква е разликата между активиране на регион и регион RequestNavigate?

Използвам един регион с 2 изгледа. Имам ComboBox, който позволява на потребителя да избира изглед в региона.

Имам 2 въпроса:

Първият въпрос е каква е разликата между:

_regionManager.Regions.Add("MyRegion")
_regionManager.Regions["MyRegion"].Add(container.Resolve<OneView>())
_regionManager.Regions["MyRegion"].Add(container.Resolve<SecondView>())

To:

_regionManager.RegisterViewWithRegion("MyRegion", () => container.Resolve<OneView>());
_regionManager.RegisterViewWithRegion("MyRegion", () => container.Resolve<SecondView>());

и вторият ми въпрос е каква е разликата между:

_regionManager.Regions["MyRegion"].ActiveViews.ForEach(view => _region.Deactivate(view));
_regionManager.Regions["MyRegion"].Activate(container.Resolve<SecondView>());

To:

_regionManager.Regions["MyRegion"].RequestNavigate(new Uri("SecondView", UriKind.Relative));

Благодаря предварително.


person user436862    schedule 18.02.2014    source източник


Отговори (1)


Разликата при първото сравнение, което споменахте, би била, че методът RegisterViewWithRegion() активира регистрирания View в края на процеса, докато първото внедряване добавя само Изгледи. Този RegisterViewWithRegion() подход се нарича View Discovery. Може да намерите свързан отговор в следната публикация, направена от вас вчера:

Полезна информация за MSDN Prism Guide:

За второто сравнение ще зависи от типа регион. Първото внедряване ще остави активиран само SecondView. Въпреки това, RequestNavigate() може да не деактивира предишния Изглед, ако Регионът е ItemsControlтип. Регион ItemsControl ви позволява да добавяте много Views, така че да имате повече от един активен View.

Ако случаят е такъв, SecondView ще се появи под предишния активен View в Регион. Но ако не искате това поведение, имате 2 възможности:

  1. Направете типа Регион като ContentControl, така че в даден момент да се показва само един изглед;
  2. Деактивирайте предишния Изглед в метода OnNavigatedFrom(). Ще трябва да направите предишния View наследник от INavigationAware.

Полезна информация за RequestNavigate() и Navigation в MSDN Prism Guide:

Надявам се това да помогне, Поздрави.

person GOstrowsky    schedule 18.02.2014