Как исправить проблему активации региона Призма? - PullRequest
0 голосов
/ 29 марта 2019

Я устанавливаю совершенно новое приложение WPF, где я использую MVVM.Я использую Prism 7.1.latest в качестве Nuget в моем проекте.После того, как я прошел свой логин, я буду перенаправлен на мой MenuPage, где пользователь может выбрать один из двух вариантов.Откройте страницу настроек или страницу загрузки.Меню является статическим, в то время как я хотел бы только обновить ContentView.

MenuPageViewModel.cs

public MenuPage2ViewModel(IContainerExtension container, IRegionManager regionManager)
        {
            _container = container;
            _regionManager = regionManager;

            _regionManager.Regions.Add("ContentRegion", new Region());

            this.CloseApplicationCommand = new DelegateCommand<Window>(this.CloseWindow);
            this.MinimizeApplicationCommand = new DelegateCommand<Window>(this.MinimizeWindow);
        }


        private DelegateCommand _loadSettingsPageCommand;

        public DelegateCommand LoadSettingsPageCommand => _loadSettingsPageCommand ?? (_loadSettingsPageCommand = new DelegateCommand(LoadSettingsPage, CanLoadSettingsPage));

        private void LoadSettingsPage()
        {
            IRegion region = _regionManager.Regions["ContentRegion"];

            var view = region.GetView(nameof(SettingsPage));
            if (view == null)
            {
                var t = _container.Resolve<SettingsPage>();
                region.Add(t, nameof(SettingsPage));
                view = region.GetView(nameof(SettingsPage));
            }

            region.Activate(view);
        }

        private bool CanLoadSettingsPage()
        {
            return true;
        }

MenuPage2.xaml место, где мой ContentControl должен быть загружен в

<Grid Column="2" Row="1">
           <ContentControl regions:RegionManager.RegionName="ContentRegion" />
</Grid>

SettingsPage.xaml мой синий фоновый вид

<UserControl x:Class="TachiFox3Reader.Win.Views.SettingsPage"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mvvm="http://prismlibrary.com/"
             mvvm:ViewModelLocator.AutoWireViewModel="True"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">

    <Grid Background="Blue">

    </Grid>
</UserControl>

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

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

1 Ответ

0 голосов
/ 29 марта 2019

Удалить строку:

 _regionManager.Regions.Add("ContentRegion", new Region());

регион уже добавлен в XAML.

XAML, который я использую для удержания региона:

<Window x:Class="WpfApp4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:wpfApp4="clr-namespace:WpfApp4"
        xmlns:regions="http://prismlibrary.com/"
        mc:Ignorable="d"        
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Button Command="{Binding LoadSettingsPageCommand}"></Button>
        <ContentControl regions:RegionManager.RegionName="ContentRegion" />
    </Grid>    
</Window>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...