2010-11-18 12 views
0

同じ列に異なるセルスタイルを割り当てるにはどうすればいいですか?セルスタイルはコンボボックスまたはテキストボックスです。 画像がアップロードされました。それは本当に難しいですか?セルスタイルのWPF DataGrid - 同じ列の異なるセルスタイル

データグリッドにテーブルを表示したいとします。最初の列はテーブルフィールドの名前で、2番目の列は列の値でなければなりません。 最初の列セルのデータ型がvar charの場合、2番目の列セルにはテキストボックスが表示されます。 最初の列セルのデータ型がintの場合、2番目の列セルはコンボボックスを表示する必要があります。

DataGrid Cell Style

おかげで、 Nアバター

alt text

答えて

1

あなたは可能性:

  • DataGridBoundColumnから派生(またはその誘導体の1つ)と

    保護されたオーバーライドのFrameworkElement GenerateElement(DataGridCellセル、オブジェクトのDataItem)

    を上書き

メソッド。このメソッドは、各セルに表示される項目を作成します。パラメータとして渡されるdataItemは、その行の項目です。問題は、現在のセルの値を表示するためにどの項目を使用するかを決定するために、binding manuallyを実行して項目をセルに表示してから、どのUIコントロールに戻すかを確認する必要があります。

  • テンプレートテンプレートを使用し、セルテンプレートでデータトリガーを使用して、表示するui要素を入れ替えます。
+0

アラン氏に感謝します。私はこの理論に挑戦しています。 –

+0

ちょっとアラン、私は試して、それは働いています。バインドにいくつかの問題がありますが、それは大きな仕事ではありません。ご協力いただきありがとうございます。 –

0

この質問をすると、WPFのデータグリッドの2種類があることに留意してください。 .NET Framework 3.5 SP1を使用するWPFToolkitのCodePlexでリリースされたもの。そして、新しいWPF DataGridは、.NET Framework 4.0を使用するWP4の組み込みコントロールとしてリリースされました。

あなたのソリューションは、使用するデータグリッドによって異なる場合があります。可能な場合は、他のデータグリッドよりも優れたものが見つかる可能性があります。

これは、セルが編集モードにあるときにコンボボックスをセルに表示する方法を説明している記事C# Cornerです。これはあなたを助けるかもしれません。ここから始めれば、必要に応じてこのコードサンプルを拡張することができます。また、編集時にコンボボックスの代わりにテキストボックスを使用する必要がある場合は、コンボボックスを設定して新しい値を入力できるようにして、必要なアイテムが利用できないときにテキストボックスに値を入力できるようにします。これがあなたが望むものなのかどうかはわかりませんが、少なくともあなたに噛むものを与えたいと思っていました。

幸運、

+0

イメージをアップロードしようとしていますが、意味はありますが失敗しました。より具体的に私の質問を編集させてください。 –

関連する問題