問題タブ [wpfdatagrid]

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 に答える
3511 参照

wpf - ウィンドウの読み込みと接続の変更後に、WPF Toolkit DataGrid ComboBox列をLinq-to-Sqlコレクションにバインドしますか?

私はMVVMの初心者です。メインウィンドウは、WPFツールキットのストックDataGridを使用します。ビューモデルが1つあり、.xaml.csファイルのDataContext_Changedイベントハンドラーのみに依存します。メインウィンドウのDataContextはビューモデルです。

DataGridComboBoxColumnのItemsSourceプロパティをビューモデルのCLRプロパティ"FieldTypes"にバインドしようとしています。「FieldTypes」は、FieldTypeタイプのLinqtoSqlテーブルから派生したリストです。DataGridのItemsSourceは1つのSystem.Data.Linq.Tableからのものであり、「FieldTypes」はのテーブルからのものであり、これら2つのテーブルには関係がありません

FieldTypes DataGridComboBoxColumnをビューモデルの「FieldTypes」プロパティにバインドするために、DataGridTemplateColumnで使用されるDataTemplateStaticResourceを作成しました。

このDataTemplate、HeaderedContentControl.ContentTemplateなどのDataGridではなくメインウィンドウの子要素で機能しますが、DataGridTemplateColumn.CellTemplateでは機能しないことがわかりました。

DataGridComboBoxColumnをDataGridにない通常のComboBoxのComboBox.ItemsSourceプロパティにバインドしようとすると、

期待どおりに機能しますが、DataGrid内のComboBoxでは機能しません。

ビューモデルのプロパティにできるだけ多くのデータバインディングを設定したいのですが、これはStaticResourceの機会のようにも見えます。ただし、接続文字列は後までわからないため、このStaticResourceはウィンドウのロード後に変更されます。ComboBox列のItemsSourceをStaticResourceにバインドする場合でも、これもDynamicResourceもうまくいきませんでした。

MVVMを使用して、DataGrid ComboBox列をDataGridのItemsSourceとは別のコレクションにバインドする方法はありますか?または、ウィンドウのロード後にSQL接続が変更された場合でも、StaticResourceを使用してこれを実現する方法はありますか?

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

c# - コレクションから DataGridComboBoxColumn へのバインド

WPF でコレクションにバインドしようとすると、次のように動作するようになりました。

XAML:

CS:

おそらく不必要ですが、ここに Person クラスがあります:

しかし、私が本当に必要としているのは、 DataGridComboBoxColumnのこれです。ここに私のリビジョンがあります:

XAML:

C#:

同じままです。

問題は、空のコンボボックス列が得られることです! これを機能させる方法はありますか?

長期的には、firstname 列をダブルクリックすると、コレクション内のすべての可能な名のオプション (つまり、George、Jim、Amy) を保持するコモボ ボックスが表示される 2 方向バインディングが必要です。

よろしくお願いします。

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

c# - WPF Datagrid の仮想化と自動高さ (非明示的)

データグリッド、グリッドスプリッター、およびいくつかのメッセージを含む下部パネルを使用してビューを設計しようとしています。何かのようなもの:

このレイアウトは完璧に見えます。グリッドがビューの大部分を占めており、必要に応じて下部のテキスト ボックスを拡大するスプリッターがあります。問題は、Datagrid が非常に大きくなり、仮想化を有効にする必要があることです。これは、グリッドのコンテナーに明示的な高さが指定されている場合にのみ機能します。

必要なレイアウト (グリッドが利用可能なすべてのスペースを埋める) を取得する方法はありますが、仮想化も有効にしていますか?

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

c# - WPFのデータグリッド(編集可能な問題、アクセスの問題)

この図に示すように、Datagrid を作成しました --> http://img682.imageshack.us/img682/5109/datagrid.png

ユーザーがデータを入力する場所。列の 1 つで、Combobox を追加しました。現在、Datagrid ではセルにデータを入力できません。IsReadOnly="False" も機能せず、「EditMode 例外」が発生していました。だから、私がしたことは、テキストブロックを作成し、その中に次のようにコンボボックスとテキストボックスを作成したことです:

このユーザーを使用すると、セルにテキストを追加できますが、私自身、このアプローチには満足していません:( .これを使用すると、入力したコンテンツにアクセスできなくなり、何らかの保存などの別の用途に使用できなくなると思いますデータ構造またはDBの.............また、このコード{cmb_act_mfを使用すると、テキストボックスを使用して(ボタンクリック時、前の質問で提案されたように)コンボボックスにコンテンツを追加できません.Items.Add(txt_box.Text); } ... それも動作しません. ...................Datagrid を編集可能にする方法? コンボ ボックスを 1 つにその列のリスト/コンテンツは、ボタンのクリック時にテキスト ボックスから追加できます.また、セルのコンテンツ (ユーザーが入力した場所) に簡単にアクセスして、DS/DB に保存することができます.....Datagrid は正しい選択ですか?助けてください。

よろしくお願いします。助けていただければ幸いです。コード スニペットはありがたいものです。

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

c# - RowDetailsTemplate の選択を解除した後に Datagrid Height のサイズを変更する

RowDetailsTemplate を使用して、行のネストされたデータグリッドを表示しています。行を選択してこのネストされたデータグリッドを表示すると、データグリッドの高さが拡張されます。ただし、行が選択解除されても高さは減りません。

  1. 行の詳細が折りたたまれた後、データグリッドのサイズを元の高さに変更する方法はありますか?

  2. 宣言的に行うことは可能ですか?

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

wpf - ObservableCollection DataGrid

ObservableCollection を dataGrid の itemssource にバインドしました。

監視可能な Collection の collectionChangedEvent は、追加、削除、削除するときにのみ呼び出されます。しかし、レコードを更新しても起動しません。

Updateのイベントも発生させる方法は?

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

wpf - WPFウィンドウで誰がフォーカスしているのかを判断する

WPFを使用しており、DockingLibraryから派生したウィンドウがあります。このウィンドウには、複数のアイテムを含むグリッドがあり、そのうちの1つはWPFデータグリッドです。MV-VMパターンを使用しています。このウィンドウが作成されて表示されると、このデータグリッドのどの行も選択されません。次のような操作を行うことで、強調表示されたとおりに行を表示するように設定できます。

これにより、データグリッドの最初の行が強調表示されて表示されます。ただし、これらのいずれかが常に存在するわけではないため、この行は選択されておらず、フォーカスもありません。次のように、IsSelectedとFocusをこの行に設定してみました。

私はこれについてすべて間違っていますか?データグリッドの最初の行を選択してそれにフォーカスを設定する他の方法はありますか?通常、データグリッドが作成されると、ユーザーが目的の行をクリックするまで行は選択されません。

どんな考えでも大歓迎です。

ありがとう!

0 投票する
3 に答える
1842 参照

wpf - 制御が無効になっている場合、WPFDatagridは行の選択を解除します

ユーザーがデータグリッドの行を選択し、[記録の開始]ボタンをクリックするプログラムがあります。「記録」が行われている間、データグリッドで選択された値を変更することは許可されていないため、IsEnabledをfalseに設定しました。ただし、データグリッドが無効に設定されている場合、選択された行の選択が解除され、データグリッドのSelectedItemプロパティへのバインディングが台無しになります。

コントロールが無効になっている場合でも、データグリッド行を選択したままにする方法はありますか?

編集:これはWindows Vistaでは発生しませんが、Windows7では発生します。

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

wpf - マスター/詳細 UI のベスト プラクティス?

マスター/詳細ウィンドウを持つ WPF アプリがあり、どちらも WPF Datagrid です。上部のデータグリッドで行を選択すると、詳細が下部のデータグリッドに表示されます。次のようなものに対処する方法について、UI の観点からベスト プラクティスがあるかどうか疑問に思っていました。

  1. ウィンドウが最初に開いたとき、上部のデータグリッドでデータ行が選択されていないため、下部のグリッドにデータを表示できません。これは正常ですか?または、通常、上部のデータグリッドで最初の (一番上の) 行が選択されていますか?
  2. 行を選択して削除すると、別の行が選択された行になりますか? それとも、行が選択されていない状態になりますか?
  3. 複数の行を選択できる場合、下位のデータグリッドではいつ発生しますか? 最後に選択したものを表示しますか? または、これらの複数のオブジェクトに対して削除が選択された場合、フォーカスはどこに設定されますか? または、どの行が選択されていますか?

アプリの作成方法に応じて、これらのことを処理するさまざまな方法があることは知っていますが、標準的なベスト プラクティスがあるかどうか疑問に思いました。または、WPF データグリッドがこれらのケースをどのように処理するかについて、いくつかのデフォルト操作がある場合は?

ありがとう!明細書

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

wpf - WPF Datagrid ですべてのセルにイベントを設定する方法

OnDragEnterWPF Datagrid のすべてのセルにイベントが必要です。私はこれを試しました:

しかし、うまくいかないようです。アイデアはありますか?


編集:回答ありがとうございます。別の問題に直面していることに気付きました: 私の本当の問題は、TextBoxコントロールが常にドラッグ アンド ドロップ イベントを処理済みとしてマークするため、AllowDrop を設定AllowDrop="True"しても、AllowDrop が機能していないように見えることでした。これはバグではなく、実際にはこの動作は設計によるものです。

私はプレビュー イベントを使用してこれを予測し、D'n'D イベントを処理できるようにしました。

お役に立てれば。
最初の質問に関しては正確だったので、回答としてマークします。