2012-03-20 4 views
0

申し訳ありませんが、私はこの日のより良い部分で私の頭を傷つけてきました、Googleはほとんど役に立たなかった、私の仲間のプロジェクトの仲間はそれを解決することができませんでした私たちは締め切りから1日足らずです。WPFで動的なデータグリッドにデータを追加

私は、変数の型(DataGridTextColumn、DataGridComboBoxColumn、DataGridCheckBoxColumn)の列の数が可変で構成され、データグリッドを持って

と私はデータをバインドする必要があります:あなたは私たちの唯一の希望だ、オビ=ワンStackOverflowの私たちを助けます彼らへ。

これらの各列は、グリッドが非常に柔軟でなければならない理由であるデータベースクエリを表します。私が助けが必要なのは、コードビハインド部分のこれらの列にデータをバインドして追加する方法です。

EDIT 私がこれを明確にするのを忘れているようだ:一部の列は、(:「グレード」私たちのインスタンスで)同じタイプのデータが含まれています。このオブジェクトのサブタイプによっては、列に異なるタイプが必要です。したがって、グリッドにはn個の列があり、その一部は同じタイプのデータにバインドする必要があります。

彼らは動的に変化するので、私は、私は、配列の異なるインデックスに列をバインドすることはできません何を読んでからは、各列に1つのプロパティを持つコンテナクラスを設計することができないのEND EDIT

は、と私が持っていた最後のアプローチのアイデアは、データのタイプ( "チェックボックス"、 "文字列"、 "コンボボックス")を表す文字列に異なる列をバインドし、その名前のプロパティを持つコンテナをそれぞれ個々の列。グリッドの列を呼び出すための「追加」メソッドがないように見えるため、これを行う方法が見つかりませんでした。私は必要なもの甘い思考コードで要約する はこのように見ているものです:

//Create an arbitrary number of columns 
for(int i = 0; i < NR_CHECKBOXES; ++i) { 
    DataGridCheckBoxColumn col = new DataGridCheckBoxColumn(); 
    col.Header = titles[i]; 
    //which are bound to a container with correct type of data 
    col.Binding = new Binding("checkboxes[" + i + "]"); 
    grid.Columns.Add(col); 
} 

grid.Add(checkboxes); //and then populate the grid 

またはこのような何か:

チェックボックスは、プロパティのデータを持っているオブジェクトのリストです
//Create an arbitrary number of columns 
for(int i = 0; i < NR_CHECKBOXES; ++i) { 
    DataGridCheckBoxColumn col = new DataGridCheckBoxColumn(); 
    col.Header = titles[i]; 
    col.Binding = new Binding("Data"); 
    col.Add(checkboxes[i]); //Populate the column specifically 
    grid.Columns.Add(col); 
} 

'(申し訳ありませんが、私はスウェーデンのキーボードを使っているので、おそらくタブを押して$を押してこのインラインをコード化できませんでした)。 これらのループは、それぞれの種類の列とデータ(コンボボックスとテキストボックス)に対してコピーされます。

これは私の問題を説明するのに十分であり、WPFでこれを達成するための正しい方法を知っている人がいることを願っています。

答えて

0

データテンプレートを使用します。各問合せを特定の型としてキャストし、その型のデータ型を指定します。その型に必要なすべてのXAMLプロパティを追加できます。 WPFは、型に基づいて正しいテンプレートを選択します。

DataTemplates

+0

は、それはまだ私に問題を与えないでしょうか?はい、正しいテンプレートが選択されますが、そのタイプの正しいデータセットが選択されますか? – Glader

+0

私のオリジナルの質問を編集しました。 – Glader

0

[OK]を、私はあなたの結果セットが非常に動的である参照してください。実行時にDataTemplateを作成して、必要なものを手に入れられますか?同じタイプの複数の列がある場合

Creating a DataTemplate at runtime

+0

少なくとも、カラムをプロパティ(コンパイル時に名前を付ける必要がある)にバインドしなければならないとは限りません。 – Glader

関連する問題