0

我有几个独立的库,其中有一些导出主视图。有一个带有 TabControl 的 Shell,希望将所有视图加载到单独的选项卡中。我可以从这个插件注册所有类型,但不知道如何显示所有这些主要视图。比如我注册了5个插件的5个View,但是如何传递给ShellView呢?

4

1 回答 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 回答