我不是专家,我不认为它是内置在棱镜中的,但这绝对是可能的:)
给你的一些提示......请客气,我没有使用 IDE 编写任何代码行:)
首先,您可以创建一个视图(和一个视图模型)来显示可用视图的列表。那些“可用视图”可以由定义视图信息的类来表示。
就像是 :
public interface IAvailableView
{
string ViewName { get; }
string ModuleName { get; }
}
其次,为了能够显示所有可用的视图,您的模块需要在目录中“可用时”加载。然后它们将在您的应用程序初始化时触发。
在您的模块中,您现在应该以特定名称注册您的视图,并且您可以在依赖容器中注册它公开的所有可用视图。
public virtual void Initialize()
{
RegisterView<IView, AnyView>("AnyView");
Register<IAvailableView>(new AvailableView("AnyView", "MyModuleName"));
}
加载完所有模块后,您的视图模型控件应该能够解析所有这些 IAvailableViews。
现在,您需要做的就是将这些可用视图绑定到控件并在用户单击项目后在 RegionManager 中注册相应的视图......
var view = GetInstance<IView>(selectedAvailableView.ViewName);
RegionManager.RegisterViewWithRegion("whateverRegion", () => view);
希望能帮助到你 :)