.net - 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 上基本导航示例的副本
解决方案
请删除RegisterForNavigation
方法调用中的可选“名称”参数。这将允许 PRISM 在视图类型和视图的唯一标识符/键之间进行默认映射。
public void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<ActiveOrdersView>();
containerRegistry.RegisterForNavigation<SearchAccountsView>();
}
如果您仍想提供自定义唯一标识符/键作为方法参数,请您使用RegisterTypeForNavigation
覆盖默认注册的方法:
protected override void RegisterTypes()
{
Container.RegisterTypeForNavigation<SearchAccountsView>("CustomKey");
}
有关更多详细信息和示例,请参阅PRISM 文档的以下页面。
推荐阅读
- java - 当安装了两个 64/32 位 JVM 版本时,JNLP 应用程序如何选择 JVM 的(正确位数)版本?
- clojure - 如何在 Clojure 中使用命令行参数?
- javascript - 未捕获的类型错误:无法在 addEventListener 处读取 null 的属性“addEventListener”
- python - 如果列表中存在重复键,则删除除另一个值更高的键之外的所有键
- caffe - Caffe - 中止训练
- android-studio - android studio中的代码模糊
- regex - 如何使用 htaccess 删除 URL 中的目录名称?
- laravel - Laravel Eloquent - 与数据透视表的模型关系
- html - 使用引导程序的 div 之间的 Html css 空间
- sonarqube - 在 SonarQube 问题页面上,如何过滤出违反特定规则的行为?