2010-12-26 127 views
8

私は実行時に(C#で)Tabコントロールを動的にタブコントロールに追加しても問題ありませんが、どうすれば新しいタブアイテムにコントロールを動的に追加できますか? Tabitemは、データベースから読み取るデータの行数に依存するため、動的にする必要があります。各Tabitemのレイアウトは同じです。おかげWPF - 動的に追加されたTabitemに動的コントロールを追加しますか?

答えて

2

のTabItemは、コンテンツコントロールなので、ちょうどあなたが(他の要素などを含む例えばグリッド)を表示したい要素のいずれかのタイプであることをそのContentプロパティを設定し

4

は新しいのTabItemのContentプロパティを使用し、各TabItemは同じレイアウトを持っているとしている場合は、私は単にあなたがして、レイアウトおよび制御スタンスと場所から必要なものを包含しUserControlを作成します

private void AddChildControl(TabItem tabItem) 
{ 
    StackPanel newChild = new StackPanel(); 
    tabItem.Content = newChild; 
} 
10

:そこには、文字列や他のWPFコントロールのようなものを、設定することができますそれはTabItem.Contentのプロパティ内です。

オブジェクト表現を介してデータをTabItem.DataContextプロパティに渡して、バインディングを開始して使用することができます。

TabItem item = new TabItem(); 
item.Content = new CustomUserControl(); 
item.DataContext = data; //where data is the data that 
         //comes from the database 
         //being represented in object form 
+0

ありがとう、私は今いくつかの進歩を遂げ始めています。私のusercontrolにいくつかのコントロールが含まれている場合は、オブジェクトにデータをパッケージ化してTabItemに '一度にすべてのデータを渡すことができると言っていますか?おそらく、私のコントロールは、私が呼ぶことができるものだけを行う方法を含んでいるでしょうか? –

+0

@Paul非常に多くの単語はい。 UserControlでは、TabItemのDataContextを設定するとカスケードされるので、DataBindingを使用することができます。次に、UserControlでコントロールをDataContext内のデータにバインドできます。 –

+0

多くのご協力ありがとうございました。もう1つの質問がありますが、各タブアイテムは同じですが、私が使用する最良のコントロールがわかりません。各タブでは、データベースから読み込んだ各行を表す「行」を表示する必要があります。データの各行は、3つのテキストフィールド、ブール値、および1-4の範囲の整数で構成され、4つのイメージのうちの1つを表します。テキスト、ブール値(チェックボックス内)、および対応するイメージを変更するための適切なコントロールを表示する必要があります。何とかデータグリッドでこれを行うことができますか? –

関連する問題