我刚开始使用PRISM,遇到无法解决的异常。
<Window x:Class="Workplace.Shell"
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:prism="http://www.codeplex.com/prism"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid Name="Header" prism:RegionManager.RegionName="Header">
</Grid>
</Grid>
</Window>
。
using Autofac;
using Prism.Autofac;
using Prism.Modularity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace Workplace
{
class Bootstrapper : AutofacBootstrapper
{
protected override DependencyObject CreateShell()
{
return new Shell();
}
protected override void InitializeShell()
{
base.InitializeShell();
Application.Current.MainWindow = (Window) this.Shell;
Application.Current.MainWindow.Show();
}
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
}
}
}
运行后出现异常:
KeyNotFoundException:类型的IRegionAdapter System.Windows.Controls.Grid未在区域适配器中注册 映射。您可以通过以下方法为此控件注册一个IRegionAdapter: 覆盖了中的ConfigureRegionAdapterMappings方法 引导程序。
Okey,但AutofacBootstrapper
类没有要覆盖的名为ConfigureRegionAdapterMappings
的方法。
首先,我认为AutofacBootstrapper
出了点问题,但是即使将其更改为UnityBootstrapper
也仍然存在问题。但是第二个允许我覆盖ConfigureRegionAdapterMappings
答案 0 :(得分:1)
Grid
对于某个区域不是有用的主机。尝试改用ContentControl
。
当然,如果您绝对想使用Grid
,则可以创建并注册自定义区域适配器,但是我看不出有任何好处。