0

私はいくつかの独立したライブラリを持っており、いくつかはメインビューをエクスポートしています。TabControlを備えたシェルがあり、すべてのビューを別々のタブにロードしたいと考えています。このプラグインからすべてのタイプを登録できますが、このすべてのメインビューを表示する方法がわかりません。たとえば、5つのプラグインから5つのビューを登録しましたが、それを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 に答える