20 列程度の SDK:DATAGRID がありますが、開くと 4 つのフィールド/列しか表示されません。これは私が欲しいものであり、どのように設計したか
基本的に、ユーザーのクリックに基づいて情報を取得しています - 例:
OWNERNAME.Text = ((TextBlock)EPICGrid.Columns[1].GetCellContent(EPICGrid.SelectedItem)).Text;
および/または
OWNERNAME2.Text = ((TextBlock)EPICGrid.Columns[16].GetCellContent(EPICGrid.SelectedItem)).Text;
私が実行しているのは、スクロールして列を表示しない限り、セル内の情報を取得しないため、グリッドが表示されたときに表示されるため、データの最初の 4 列のみを取得できます。
スクロールしてそれらの列を表示しない限り、列 5 ~ 20 からデータを取得することはできません。クリック中に表示される必要はありません...列を表示するまでデータが実際に読み込まれないようです。
最初のレコード/行がすべてのデータ/セル/列をロードし、最初のレコードから任意のデータを取得できると言うべきだと思いますが、問題はレコード 2 - * で発生します。
明確にするために、私の問題は列や行の可視性ではありません。私の問題は、SDK DataGrid がオンデマンドでデータをロードしているように見えることです。そのため、ある時点で列が表示されていない場合、セル内の情報は利用できません。
すべての列を表示したくないし、ユーザーにすべての列を表示する機能を与えたくないので、スクロール バーを無効にしたいのですが、ユーザーが特定の行をクリックすると、特定のセルの情報を取得する必要があります列はまだロードされていないため、情報はありません。
機能のロード オン デマンドをオフにするにはどうすればよいですか?
検索を行ったところ、誰かが行の読み込みで同様の問題を抱えており、提案が設定されていることがわかりましたVirtualizingStackPanel.VirtualizationMode = Standard
問題は VirtualizingStackPanel.VirtualizationMode に起因しているようですが、このプロパティを標準に設定してリサイクルしましたが、うまくいきませんでした。
定義は次のとおりです。
既定では、VirtualizingStackPanel は、表示されている各アイテムのアイテム コンテナーを作成し、不要になったとき (アイテムがスクロールして表示されなくなったときなど) に破棄します。ItemsControl に多数のアイテムが含まれている場合、アイテム コンテナーを作成および破棄するプロセスがパフォーマンスに悪影響を及ぼす可能性があります。VirtualizingStackPanel.VirtualizationMode が Recycling に設定されている場合、VirtualizingStackPanel は毎回新しいコンテナーを作成するのではなく、アイテム コンテナーを再利用します。
初期ロード時に、セルが表示されていない場合、セルの内容を取得できません (最初のレコード/行でない限り)。セル/列が表示されると、情報が利用可能になります。