我有几个独立的库,其中有一些导出主视图。有一个带有 TabControl 的 Shell,希望将所有视图加载到单独的选项卡中。我可以从这个插件注册所有类型,但不知道如何显示所有这些主要视图。比如我注册了5个插件的5个View,但是如何传递给ShellView呢?
问问题
164 次
1 回答
2
如果你有接口
public interface ITabView {
}
所有视图都实现
public class MyFirstView : UserControl, ITabView
{
....
}
然后你通过类似的方式注册它们
builder.RegisterType<MyFirstView>().As<ITabView>();
builder.RegisterType<MySecondView>().As<ITabView>();
然后您可以通过将通用 IEnumerable 注入到 ShellView 的构造函数中来访问它们(即使它们在不同的程序集中注册),例如
public ShellView(IEnumerable<ITabView> tabViews)
{
foreach (var view in tabViews)
{
... Create a tab for each view, make the tab the parent of the view
... and add the tab to the TabControl
}
}
于 2012-09-17T19:56:52.483 回答