内容控件的基本导航

问题描述 投票:0回答:1

这让我抓狂。我试图用区域做最基本的事情。在我的视图中,我有一个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中没有任何变化,同样的视图是可见的。我到底做错了什么?

EDIT: 所有涉及的视图都有 prism:ViewModelLocator.AutoWireViewModel="True"所有的viewmodels都来自于bindablebase。这或多或少是对 棱镜上的基本导航示例 github

wpf prism
1个回答
0
投票

请删除 "name "这个可选的参数。RegisterForNavigation 方法的调用,这将允许PRISM在视图类型和视图的唯一标识符key之间做一个默认的映射。这将允许PRISM在视图类型和视图的唯一标识符key之间做一个默认的映射。

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

如果你仍然想提供一个自定义的唯一标识符key作为一个方法参数,请你用 RegisterTypeForNavigation 方法来覆盖默认注册。

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

参见 下一页 PRISM文档中的更多细节和示例。

© www.soinside.com 2019 - 2024. All rights reserved.