c# - Prism Parent TabControl 子区域
问题描述
试图TabControl
在另一个区域内创建一个区域。有TabControl
一组Views
将被添加到其中,并带有各自的ViewModels
.
但是要么View
不显示,要么tabitem
只View
显示一个,要么我收到以下错误:
System.ArgumentException: 'This RegionManager does not contain a Region with the name 'ParentTabRegion'. (Parameter 'regionName')'
主菜单视图:
<Grid>
<ContentControl prism:RegionManager.RegionName="ContentRegion" />
</Grid>
主菜单视图模型:
public class MainMenuViewModel : BindableBase
{
private readonly IRegionManager _regionManger;
public MainMenuViewModel(IRegionManager regionManager)
{
_regionManger = regionManager;
_regionManger.RequestNavigate("ContentRegion", "ParentView");
}
}
父视图:
<Grid>
<TabControl prism:RegionManager.RegionName="ParentTabRegion" />
</Grid>
父视图模型:
public class ParentViewModel : BindableBase
{
private readonly IRegionManager _regionManger;
private Child1View _tab1 = new Child1View();
private Child1View Tab1
{
get { return _tab1; }
set { SetProperty(ref _tab1, value); }
}
private Child2View _tab2 = new Child2View();
private Child2View Tab2
{
get { return _tab2; }
set { SetProperty(ref _tab2, value); }
}
public ParentViewModel(IRegionManager regionManger)
{
_regionManger = regionManger;
// Gives 'This RegionManager does not contain a Region with the name 'GeneralDataTabRegion'. (Parameter 'regionName')' error
_regionManger.AddToRegion("ParentTabRegion", typeof(Child1View));
_regionManger.AddToRegion("ParentTabRegion", typeof(Child2View));
//I've also tried the following
// Same error as above
// _regionManger.Regions["ParentTabRegion"].Add(typeof(Tab1View));
// _regionManger.Regions["ParentTabRegion"].Add(typeof(Tab2View));
// Same error as above
// _regionManger.AddToRegion("ParentTabRegion", Tab1);
// _regionManger.AddToRegion("ParentTabRegion", Tab2);
// Only the last registered view is displayed
// _regionManger.RegisterViewWithRegion("ParentTabRegion", typeof(Tab1));
// _regionManger.RegisterViewWithRegion("ParentTabRegion", typeof(Tab2));
}
}
我在所有视图中也有 prism 命名空间:
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
也许我没有以ParentTabRegion
某种方式注册?但我不必注册其他地区,它们似乎开箱即用。
让我知道您是否知道我做错了什么,或者我是否缺少某些东西。谢谢你。
解决方案
我只想发表评论,但由于声誉低下而不能发表评论。反正..
在使用嵌套视图时检查这篇文章 Prism 7 throws and exception
正如评论中所述:“问题在于如何在 ViewModel 中注入作用域区域”Brian 的这段视频应该可以帮助您解决这个问题。
https://app.pluralsight.com/library/courses/prism-mastering-tabcontrol
推荐阅读
- java - 如何在定义的持续时间后停止执行 Java 中的步骤
- aws-lambda - 调用 lambda 函数处理程序 java
- jenkins - Bitbucket cloud webhook 不触发 Jenkins Build:无分支信息
- r - 如何在年龄金字塔图中填写缺失的年龄?
- python - 如何从 column_name != some_value 的数据库中查找记录?
- python - If 语句简单
- types - 给定一个类型,如何找到我需要实现的所有功能
- javascript - 类型错误:createTestCafe 不是函数
- r - 如何在不增加 NA 的情况下排除纵向分析中的某些参与者
- javascript - 无法将我的 css 文件正确链接到部分标题