призма переключения между представлениями в одном регионе - PullRequest
3 голосов
/ 04 июня 2009

У меня есть регион с именем «ActiveModule», и я хочу повторно использовать его с другими представлениями, например, вы нажимаете кнопку поиска, и я показываю там представление поиска и т. Д. И т. Д.

Единственный способ, которым я могу сделать банкомат, - это деактивировать все активные виды в этом регионе, а затем активировать вид, который мне нравится, это немного грязно, есть ли «viewManager» или что-то подобное, что я могу использовать?

Ответы [ 5 ]

4 голосов
/ 11 июня 2009

Если ваш регион является ContentControl или является производным от ContentControl, то одновременно может быть только одно активное представление, и вам нужно только активировать поисковое представление для региона.

1 голос
/ 20 февраля 2013

Рассматривали ли вы использовать тип contentControl, который способен отображать несколько просмотров? Например, вы можете использовать TabControl следующим образом:

<TabControl Name="MainRegion" Regions:RegionManager.RegionName="MainRegion"/>

Теперь вы можете добавить более одного вида в регион. Используйте интерфейсы INavigationAware и IActiveAware от Prism, чтобы иметь возможность выполнять навигацию по представлениям (активировать их, найти правильный вид и т.

0 голосов
/ 07 октября 2014

Не уверен, как вы выложили свой фреймворк, но если вы используете фреймворк, связанный с навигацией, вы можете просто позвонить

regionManager.RequestNavigate(RegionNames.MainContentRegion, new Uri("your target view" + parameters, UriKind.Relative));

вышеприведенная строка позаботится о деактивации других видов в регионе.

В противном случае, если вы просматриваете обнаружение или просматриваете инъекцию, вы можете использовать подход здесь

region.Activate(view);
0 голосов
/ 18 августа 2011

Насколько мне известно, что вы делаете, это единственный способ, теоретически в SCSF самый верхний вид был активирован фреймворком. Вы можете создать свой собственный ViewManager или эквивалент ShowViewService, чтобы сделать это. Вообще-то, это то, что я сделал!

0 голосов
/ 15 декабря 2010

Если вы используете IRegionManager, вы можете удалить все виды, типы которых вы узнаете, а затем добавить свои.

    foreach (var view in _regionsManager.Regions["MyRegion"].Views.ToArray())
    {
        if (view is MyType ||
            view is MyOtherType)
            _regionsManager.Regions["MyRegion"].Remove(view);
    }

    _regionsManager.AddToRegion("MyRegion", typeof(MyView));

Это ни в коем случае не идеально, но работает. :)

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