首页 > 解决方案 > ContentControl 中的基本导航

问题描述

这让我抓狂。我试图对地区做最基本的事情。在我看来,我有一个 contentregion 和两个视图。我想在启动时显示一个,在按钮单击时显示另一个

这是我的模块代码

public void OnInitialized(IContainerProvider containerProvider)
{ 
    var regionManager = containerProvider.Resolve<IRegionManager>();
    regionManager.RegisterViewWithRegion(Navigation.Regions.SearchHolderRegion, typeof(ActiveOrdersView)); //startup view for search 
}

public void RegisterTypes(IContainerRegistry containerRegistry)
{
    containerRegistry.RegisterForNavigation<ActiveOrdersView>("ActiveOrdersView");
    containerRegistry.RegisterForNavigation<SearchAccountsView>("SearchAccountsView");
}

这是视图

<StackPanel>
    <TextBlock Text="Seach holder"/>
    <Button Content="Open view" Command="{Binding OpenViewCommand}"/>
    <ContentControl   prism:RegionManager.RegionName="SearchHolderRegion" />
</StackPanel>
public class SearchHolderViewModel : BindableBase
{ 
    IRegionManager _regionManager;
    public DelegateCommand OpenViewCommand { get; set; }

    public SearchHolderViewModel(IRegionManager regionManager)
    {
        _regionManager = regionManager;
        OpenViewCommand = new DelegateCommand(OpenViewCommandHandler);
    }

    private void OpenViewCommandHandler()
    {
            _regionManager.RequestNavigate("SearchHolderRegion", "SearchAccountsView"); 
    }
}

第一个视图显示正常。但是当我单击按钮时,我到达处理程序并调用 RequestNavigate(...) 但在 GUI 中没有任何变化,相同的视图是可见的。我做错了什么?

编辑:所有涉及的视图都有prism:ViewModelLocator.AutoWireViewModel="True",所有视图模型都来自 bindablebase。这或多或少是prisms github 上基本导航示例的副本

标签: .netwpfprism

解决方案


请删除RegisterForNavigation方法调用中的可选“名称”参数。这将允许 PRISM 在视图类型和视图的唯一标识符/键之间进行默认映射。

public void RegisterTypes(IContainerRegistry containerRegistry)
{
    containerRegistry.RegisterForNavigation<ActiveOrdersView>();
    containerRegistry.RegisterForNavigation<SearchAccountsView>();
}

如果您仍想提供自定义唯一标识符/键作为方法参数,请您使用RegisterTypeForNavigation覆盖默认注册的方法:

protected override void RegisterTypes()
{
    Container.RegisterTypeForNavigation<SearchAccountsView>("CustomKey");
}

有关更多详细信息和示例,请参阅PRISM 文档的以下页面


推荐阅读