0

私はむしろ MEF に夢中になっており、それを使用して、さまざまなタブをロードするデモ アプリケーションを構築する予定です。私は MEF と WPF の初心者であり、MEF はアセンブリをロードしていますが、作成した TabItem にコントロールをロードすることに行き詰まっています。私のコードはこのように見えます..

            foreach (var page in pages)
            {
                TabItem item = new TabItem();
                item.Header = page.PageTitle;

                /// Errm???

                // Add each page
                tcPageControl.Items.Add(item);
            }

タブはページなので、完全に間違っている可能性があります。助けていただければ幸いです。

前もって感謝します

4

4 に答える 4

1

インテリセンスは手元にありませんが、アイテムのコンテンツを自分のページに設定する必要があると思います。何かのようなもの:

    foreach (var page in pages)
    {
        TabItem item = new TabItem();
        item.Header = page.PageTitle;

        item.Children.Add(page);
        //or item.Grid.Children.Add(page) or something like that.

        // Add each page
        tcPageControl.Items.Add(item);
    }
于 2010-06-12T23:44:56.097 に答える
0

私は私の問題を解決しました。Pagesは親としてFramesしか持てないので、このコードを追加することで問題に対処できます。

            foreach (var page in pages)
            {
                TabItem item = new TabItem();
                item.Header = page.PageTitle;

                // Now add some controls

                Frame frame = new Frame();

                frame.Content = page.View;

                item.Content = frame;

                // Add each page
                tcPageControl.Items.Add(item);

                //tcPageControl.Children.Add(view.Value);
            }
于 2010-06-13T20:47:04.543 に答える
0

次のように、TabItem の Content プロパティをページに設定するだけです。

foreach (var page in pages) 
{ 
  TabItem item = new TabItem(); 
  item.Header = page.PageTitle; 

  item.Content = page;

  tcPageControl.Items.Add(item); 
} 

これは、LINQ を使用してコーディングするはるかに洗練された方法です。

tcPageControl.ItemsSource =
  from page in pages
  select new TabItem
  {
    Header = page.PageTitle,
    Content = page,
  };

一般に、WPF では、コードを正しく構成すれば、"foreach" ループを記述する必要はありません。

于 2010-06-13T03:46:27.173 に答える
0

ここには多くの詳細はありませんが、基本的な考え方は[Export]、ページ タイトルなどを提供するカスタム クラス内の各「ページ」にある可能性があります。

次に、 を使用[ImportMany]してページのコレクションをインポートし、インポートしたページごとに「タブ」を作成します。

于 2010-06-12T23:40:44.677 に答える