問題タブ [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.
wpf - カスタム列ヘッダーをバインドする WPF Datagrid
MVVM パターンを使用して、WPF DataGrid の列ヘッダーとメイン データをデータ ソースにバインドする方法を見つけようとしています。私が探している結果は次のようになります。
(ソース: vallelanga.com )
ここでヘッダーのスタイルを設定できましたが、ヘッダーの値をバインドする方法がわかりません。具体的には、チェック ボックスの IsChecked プロパティ、コンボ ボックスの選択されたインデックス、およびテキスト ボックスの値です。
以前は単純な DataTable を使用してメイン グリッド データを設定していましたが、グリッド データと各列の値の両方を保持するには、より複雑なものが必要になります。または、それらを完全に別個のエンティティとして保存することもできます。
それで、私がこのバインディングをどのようにやってのけることができるかについて誰か知っていますか? 制限の 1 つは、列が実行時までどうなるかわからないため、列を自動生成する必要があることです。アプリケーションは Excel スプレッドシートからデータをロードするだけで、任意の数の列が存在する可能性があります。
ありがとう、ブライアン
wpf - xml を WPF DataGrid に正しくバインドする方法は?
さまざまな解決策を探して試しましたが、これまでのところ、問題を解決するものはありません。Visual Studio 2010/.NET4 の WPF の組み込み DataGrid を使用して、XDocument として保存されている XML ドキュメントのデータを表示しています。
私のコードはすべて正常に動作し、XDocument が存在し、正しいことを確認しました。ただし、DataGrid にはデータは表示されません。
XML は次のようになります (わかりやすくするために簡略化しています)。
私の XAML は次のようになります。
それをバックアップする C# は、(Web サービスからダウンロードした) 新しい XDocument を (INotifyPropertyChanged を実装する) TrackList プロパティに割り当てるだけです。それ以上の処理は行われません。
以前に XLinq を使用してクエリ結果にバインドしようとしましたが、どちらも機能しませんでした (同じ問題)。そのため、XPath アプローチを試して、潜在的にバグのある Linq ステートメントを記述しないようにし、問題を見つけようとしました。 .
DataGrid を正しく表示する方法についてのアイデアが不足しています。これがどのように機能するかについての私の理解は明らかに不足しているため、提供された助けに大いに感謝します.
編集:生のXMLを自分でダウンロードしているため、入力データ形式にある程度の柔軟性があることに注意してください。いくつかの提案を試して、何ができるか見てみます。
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を使用してこれを実現する方法はありますか?
c# - コレクションから DataGridComboBoxColumn へのバインド
WPF でコレクションにバインドしようとすると、次のように動作するようになりました。
XAML:
CS:
おそらく不必要ですが、ここに Person クラスがあります:
しかし、私が本当に必要としているのは、 DataGridComboBoxColumnのこれです。ここに私のリビジョンがあります:
XAML:
C#:
同じままです。
問題は、空のコンボボックス列が得られることです! これを機能させる方法はありますか?
長期的には、firstname 列をダブルクリックすると、コレクション内のすべての可能な名のオプション (つまり、George、Jim、Amy) を保持するコモボ ボックスが表示される 2 方向バインディングが必要です。
よろしくお願いします。
c# - WPF Datagrid の仮想化と自動高さ (非明示的)
データグリッド、グリッドスプリッター、およびいくつかのメッセージを含む下部パネルを使用してビューを設計しようとしています。何かのようなもの:
このレイアウトは完璧に見えます。グリッドがビューの大部分を占めており、必要に応じて下部のテキスト ボックスを拡大するスプリッターがあります。問題は、Datagrid が非常に大きくなり、仮想化を有効にする必要があることです。これは、グリッドのコンテナーに明示的な高さが指定されている場合にのみ機能します。
必要なレイアウト (グリッドが利用可能なすべてのスペースを埋める) を取得する方法はありますが、仮想化も有効にしていますか?
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 は正しい選択ですか?助けてください。
よろしくお願いします。助けていただければ幸いです。コード スニペットはありがたいものです。
c# - RowDetailsTemplate の選択を解除した後に Datagrid Height のサイズを変更する
RowDetailsTemplate を使用して、行のネストされたデータグリッドを表示しています。行を選択してこのネストされたデータグリッドを表示すると、データグリッドの高さが拡張されます。ただし、行が選択解除されても高さは減りません。
行の詳細が折りたたまれた後、データグリッドのサイズを元の高さに変更する方法はありますか?
宣言的に行うことは可能ですか?
wpf - ObservableCollection DataGrid
ObservableCollection を dataGrid の itemssource にバインドしました。
監視可能な Collection の collectionChangedEvent は、追加、削除、削除するときにのみ呼び出されます。しかし、レコードを更新しても起動しません。
Updateのイベントも発生させる方法は?
wpf - WPFウィンドウで誰がフォーカスしているのかを判断する
WPFを使用しており、DockingLibraryから派生したウィンドウがあります。このウィンドウには、複数のアイテムを含むグリッドがあり、そのうちの1つはWPFデータグリッドです。MV-VMパターンを使用しています。このウィンドウが作成されて表示されると、このデータグリッドのどの行も選択されません。次のような操作を行うことで、強調表示されたとおりに行を表示するように設定できます。
これにより、データグリッドの最初の行が強調表示されて表示されます。ただし、これらのいずれかが常に存在するわけではないため、この行は選択されておらず、フォーカスもありません。次のように、IsSelectedとFocusをこの行に設定してみました。
私はこれについてすべて間違っていますか?データグリッドの最初の行を選択してそれにフォーカスを設定する他の方法はありますか?通常、データグリッドが作成されると、ユーザーが目的の行をクリックするまで行は選択されません。
どんな考えでも大歓迎です。
ありがとう!