問題タブ [datagridcell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1694 参照

wpf - DataGridTextColumnから継承し、GenerateElementをオーバーライドします

このアプローチでは、セル値(つまり、負の値の場合は赤のテキスト、正の値の場合は緑)に基づいて個々のセルをフォーマットできるカスタムDataGridを作成しようとしています...

WPFToolkitDataGridで現在のセルのバインディング値を取得する方法

また、値を負から括弧で囲んだものに変換する必要があります(つまり、-2.34から(2.34))。継承/オーバーライドが機能しています。私の質問は、オーバーライドされたGenerateElementメソッドのセルの値にアクセスするにはどうすればよいですか。

よろしくお願いします、フィル

0 投票する
1 に答える
1297 参照

wpf - DataGridCells 間のコントロールへのアクセス、動的カスケード ComboBoxes

2 つの列が ComboBoxes である DataGrid があります (1 つにはほとんど含まれていませんが、これは問題ではありません)。

ユーザーが最初の Combo の値を変更すると、他の列の ComboBox がそのプロパティにバインドされる必要があります (このプロパティはコレクションです)。最初の ComboBox がカテゴリであるとします。ユーザーがその値を変更すると、他の CB に (最初のコンボの選択されたカテゴリ) ベンダーの値が取り込まれます。

どうすればいいですか、MVVMは使用せず、単純なWPFのみです。それを実装する正しい方法が何であるかわかりません。正しく開始したことを願っています。

最初の SelectionChangeHandler から他の ComboBox (別の DataGridCell にある) を取得できれば、最初の選択が変更されるたびにそのソースをリセットできるので、それが最善だと思います。現在の (最初の) DataGridCell に到達する機能があることに注意してください。適切な DataGridCell 兄弟にアクセスして、その子 (2 番目) のコンボを取得する効率的な方法を探しているだけです。

また、選択されたカテゴリは行ごとに異なる必要があり、2 番目の ComboBox はこの行のカテゴリに依存する必要があることに注意してください。
CollectionViewSource.Source が現在のアイテム (つまり、行の DataContext) にバインドされるように実際に実装しようとしましたが、うまくいかないようです。
私は、2 番目のコンボの CollectionViewSource (VendorsCollection) を、1 番目の ComboBox の SelectionChange でアクション トリガーまたはハンドラーを介して設定することを好みます。

そのフィールドの他の ComboBoxes はすべて互いにバインドされているため、問題はないようです。CollectionViewSource.Filter を使用することもできますが、最初のものとは異なり、単純な兄弟であるため、それらにアクセスすることは問題ではありません。これは、別の DataGridCell の奥深くにある遠いいとこです。

これが私がこれまでに試したことです:

0 投票する
1 に答える
1387 参照

wpf - 別のDataGridCellからDataGridCellの子にアクセスしますか?

ComboBoxを含むDataGridCellがあります。

その「SelectionChanged」イベントを発生させたときに、別の列(最終的には実行時のセル)のCollectionViewSourceに、この行で選択した値に従ってデータを入力する必要があります。

多分DataTrigger、ActionTrigger、EventTrigger、多分コード、XAML私は気にしない、私はただ解決策が必要です。

どうもありがとう!

関連:DataGridCells、動的カスケードComboBox間の制御へのアクセス

0 投票する
1 に答える
8672 参照

c# - WPFDataGridバインディングDataGridCellコンテンツ

これは本当に簡単な答えになることを願っています、私は私が思う木のためのことわざの木を見ていません。

セルのコンテンツを画像のソースプロパティにバインドするDataGridCellスタイルがあります。現在使用しているXAMLは次のとおりです。

現時点では、画像ソースをコンテンツにバインドしていますが、これは機能しませんが、Valueも試しましたが、機能しませんでした。

だから私の質問は、素晴らしくて単純です..セルのコンテンツをこの画像のソースプロパティに取得するために使用する正しいバインディングは何ですか?

前もって感謝します!

ピート

0 投票する
1 に答える
8391 参照

wpf - セルオブジェクトのプロパティをWPFDataGridのDataGridCellにバインドする

WPF DataGridを使用して、セルオブジェクトプロパティの関連する値に基づいて、DataGridCellのさまざまな表示および関連するプロパティ(Foreground、FontStyle、IsEnabledなど)を変更する必要があります。

これは、たとえば(ObservableDictionariesのObservableコレクションを使用して)コードで簡単に実行できます。

正常に動作しますが、セルオブジェクトのプロパティにパスを設定する方法が見つからないため、XAMLでこれを行う方法がわかりません。

XAMLの試みの1つは次のとおりです。

ただし、IsLockedプロパティへのバインドはありません

以前のバージョンはrow[col].IsLockedを返し、DataTriggerを使用してFontStyleを設定しましたが、返されたオブジェクトはデータバインドされていないことに注意してください。

もちろん、アプリケーションは設計時に列が何であるかを認識していないことに注意してください。

最後に、DataTableは私の要件にはあまりにも非効率的ですが、とにかくDataTableでこれがどのように行われるかを確認したいと思います。そのようなソリューションがあれば、他の場所で役立つ可能性があります(ただし、コレクションを使用することをお勧めします)。

確かにこれは一般的な問題であり、私はプロジェクトですべてのMVVMを実行しようとしているWPF初心者ですが、この問題はWPFDataGridの使用に関して私を妨げています。

0 投票する
2 に答える
21091 参照

wpf - WPF - DataGridRowからセルを取得するには?

行の背景色が交互に変わるデータ バインドされた DataGrid があります。セルに含まれるデータに基づいてセルに異なる色を付けたいと思います。このスレッドで提案された解決策を試しました

http://wpf.codeplex.com/Thread/View.aspx?ThreadId=51143

しかし、

DataGridCellsPresenter プレゼンター = GetVisualChild(row)

常に null を返します。

私は使っている

しかし、DataGridRow の VisualTreeHelper.GetChildrenCount() は常に 0 を返します。DataGridRow が null ではなく、既にデータが取り込まれていることを確認しました。どんな助けでも大歓迎です。

ありがとう。

0 投票する
11 に答える
36559 参照

wpf - WPF DataGridCellを読み取り専用にする方法は?

DataGrid全体または列全体をreadyonly(IsReadOnly = true)にすることができることを理解しています。ただし、セルレベルでは、このプロパティは準備ができているだけです。しかし、私はこのレベルの粒度が必要です。DataGridがパブリックドメインだった昔のソースコードを変更してIsReadOnlyを行に追加することについてのブログがありますが、現在はDataGridのソースコードがありません。回避策は何ですか?

セルを無効にする(IsEnabled = false)と、ほぼ私のニーズが満たされます。ただし、問題は、無効になっているセルをクリックして行を選択することさえできないことです(私は完全な行選択モードを使用しています)。

編集:誰もこの質問に答えていないので、簡単な修正ではないと思います。考えられる回避策は次のとおりです。セルを編集不可にします。唯一の問題は、セルをクリックしても行が選択されないことです。無効にされたセルがクリックされたときに、DataGridのMouseDownまたはMouseUpイベントがまだ発生していることに気づきました。このイベントハンドラーでは、クリックした行を把握できれば、プログラムで行を選択できます。ただし、から基になる行を見つける方法がわかりませんでしたDataGrid.InputHitTest。誰かが私にいくつかのヒントを教えてもらえますか?

0 投票する
4 に答える
4953 参照

wpf - 一部のDatGridセルのコンテキストメニューを無効にするWPF

私はこのようなデータグリッドを定義しました::

これにより、右クリックが実行されたときにすべてのセルにcontextMenuが表示されます。
ヘッダーを除くすべてのセルと、一部の条件のヘッダーのコンテキストメニューを無効にしたい(ここで説明したくない他の問題があるため、DataGridHeaderStyleを使用したくありません。)

datagridでPreviewMouseRightButtonDownのハンドラーを定義し、ハンドラーで次のようなことをしようとしています::

どこがおかしいのか知りたい!! これに関して私を助けてください。また、間違った方法で要件を達成している場合は、より良い方法で行うようにガイドしてください:)

0 投票する
1 に答える
3972 参照

wpf - WPF DataGrid セル テキストの折り返し - NoWrap (False) に設定

WPF DataGrid のすべてのセルの TextWrapping を "NoWrap" に設定するにはどうすればよいですか? セル自体に「TextWrapping」プロパティがないことは理解していますが、セル内のコントロールにプロパティを設定したいと思います。

私が使用している DataGrid には明示的に定義された列がなく、表示されている結果セットは動的です。

以下のリンクで提供されている回答に似た解決策を探しています。ただし、セルのスタイル/テンプレートを明示的にオーバーライドして、使用するコントロールを定義したくありません。代わりに、TextBlock が使用されている場合は、その TextWrapping プロパティを NoWrap に設定してください。

WPF ツールキット データグリッド セル テキスト ラッピング
すべての列ヘッダーでテキスト ラッピングを有効にするにはどうすればよいですか?