問題タブ [datagridtemplatecolumn]
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 - スタイルまたはテンプレートとしてのWPFDataGridセル文字列形式
WPF DataGrid(.NET 4で提供されているもの)のセルの形式を除外するいくつかの方法を試しました。
- データコンバーター、
- スタイル内の「StringFormat」バインディングプロパティ、
- データテンプレート内の「StringFormat」バインディングプロパティ。
私は他の誰かを助けるかもしれないので私の試みを説明します、そして誰かが私にこれらの解決策を改善するためのアドバイスをくれることを願っています。私はWPFにかなり慣れていないことに注意してください...
予想される動作では、セル文字列は表示用に「1,234,567」などの特定の形式にフォーマットされますが、セルを編集するときは「1234567」(デフォルトのフォーマット)としてフォーマットする必要があります。データコンバーターを使おうとすると、編集時にデフォルトのフォーマットを使用する方法が見つからなかったため、スタイルとテンプレートに力を注いでいました。
スタイルを使用すると、DataGridTextColumnの定義は次のようになります。
動作はまさに期待どおりです。ただし、バインディングのため、このスタイルを除外して数回使用することはできません。因数分解の問題を解決するために、DataGridTemplateColumnとデータテンプレートを使用しました。これが私のDataGridTemplateColumn定義です:
そして、ControlTemplateの定義:
データテンプレートを使用すると、DataGridセルの書式設定を除外するという最初の問題は解決されますが、コントロールテンプレートを使用すると、人間工学的および視覚的な問題が発生します。たとえば、コントロールテンプレート(他の多くの場所で説明されています)によって引き起こされるダブルタブナビゲーション、および編集テキストボックスの外観(境界線の太さ、パディング、およびその他のプロパティ設定で修正しようとしています)。
この問題に関連する具体的な質問は次のとおりです。
- データコンバーターを使用して、表示用に文字列をフォーマットし、エディション用にデフォルトのフォーマットを使用できますか?
- バインディングソースを指定しながら、DataGridTextColumnスタイルを除外することは可能ですか?
- DataGridTemplateColumnを使用する方法はありますが、単にDataGridTextColumnのように見えるようにする方法はありますか?
wpf - MVVM を使用した WPF で TextBox を使用した DataGridTemplateColumn バインディング
リスト (ListOne) にバインドされた DataGrid があります。グリッド内に、ListOne で使用されているクラスとは異なる別のクラスで見つかったフィールドを含む追加の TextBox を表示したいと思います。
DataGridTemplateColumn を使用して ComboBox でこれを行ったことがありますが、問題は、TextBox を使用するときにバインディングがどのように機能するかわかりません。
ListOne には、バインドされ正しく表示されるコードと説明が含まれています。私の SQL ストアド プロシージャは、編集可能なフィールド ListOne として表示したい Join を使用して追加の値を返します。
何か案は?
c# - DataGridTemplateColumn 内のコマンド バインディング
Prism、MVVM パターン、および MEF を多用する Silverlight アプリケーションに取り組んでいます。いくつかの理由から、ビュー ファーストのアプローチに従うことにしました。
ビューの 1 つに DataGrid があり、このグリッドの列の 1 つが DataGridTemplateColumn で、これには Button だけがあります。
Button に Command と CommandParameter の両方を定義したいと思います。Command は、ViewModel の DelegateCommand である必要があります。CommandParameter は、dataGrid から直接取得される SelectedItems リストである必要があります。
これを行うためにいくつかの方法を試しましたが、Command または CommandParameter のいずれかが null です。
それは私が最初に書いたコードに従います:
誰かがそれを行うための最良の方法についてアドバイスしてもらえますか?
前もってありがとう、ジャンルカ。
c# - WPF DataGridは、バインドされたデータに基づいてColumnTypeを別のタイプに設定する方法を教えてください。
文字列「Value」フィールドと「Type」フィールドの列挙型を持つ「Preferences」データ構造があります。
タイプは0-ブール、1-整数、2-文字列にすることができます..。
このタイプフィールドの値に応じて、「値」セルをチェックボックス、テキストボックス、ドロップダウンなどの異なる方法で表示したいと思います。したがって、明確にするために、同じ列にその行のデータに応じて異なるセルを表示する必要があります。
DataGridTemplateColumnを使用する必要があると思いますが、それを実行したことはなく、可能であればいくつかの例を示します。
また、XAMLで何ができ、コードで何をする必要がありますか?バリューコンバーターも使用する必要があると思いますか?
silverlight - SilverlightのComboboxでDataGridevents DataGridBeginningEdit、DataGridCellEditEndingをトリガーする方法は? / コンボボックスの CellTemplate
DataGridevents (DataGridBeginningEdit、DataGridCellEditEnding、..etc) を使用して、変更を処理および検出したいと考えています。私が理解している限り、「CellTemplate」がないと、これらはトリガーされません。したがって、TextBlock を使用して適切な celltemplate を作成しようとしていますが、「DisplayMemberPath」を使用しているため、CellEditingTemplate の Combobox に使用しているバインディングはあまり簡単ではないと思います..
より単純なケースの例はありますが、このシナリオに適したものは見つかりませんでした。以下の Xaml スニペットを参照してください。
ありがとうございました
wpf - DataGridTemplateColumn のセルの WPF コンテンツ
WPF では、DataGridCell への参照があり、その内容を取得したいと考えています。以前は DataGridTextColumn にそのセルがあり、次のようなコンテンツを取得できました。
しかし、セルが DataGridTemplateColumn にあるため、これは機能しなくなりましたが、その列の DataTemplate として TextBlock を指定しました。まだ手に入れる方法はありますか?
問題を明確にするために編集します。次のコードは意図したとおりに機能しています。
ただし、TemplateColumn を使用すると、ブロックが null になるため、コードは機能しません。
セルの内容 (私の場合は文字列) を取得する方法はありますか?
wpf - DataGridTemplateColumn:ItemsSourceを使用する前に、Itemsコレクションを空にする必要があります。
エラーコードはなぜですか:
次のコードは正しいです:
しかし、データグリッドにボタンを追加することはできません
wpf - DataGridTemplateColumn内の要素への参照を取得します
私はしばらくの間この問題に苦しんでいて、それに対する答えを得ることができないようです。問題を示すために単純なXAMLファイルをモックアップしました(この質問に必要な数よりも多くのファイルが含まれているため、実際のXAMLファイルは提供していません)。
これが私の質問です:次のXAMLファイルが与えられた場合、DataGridTemplateColumn.CellEditingTemplateDataTemplateにあるselectHeightComboBoxへの参照をコードビハインドで取得するにはどうすればよいですか?selectAge ComboBoxでの選択に基づいて、ComboBoxのプロパティを変更できるように、参照が必要です。
私がやろうとしていることは、正確には「ベストプラクティス」ではないかもしれないことを理解していますが、レガシーコードで与えられたものを使って作業しようとしています。
やりたいことに関連するこのMSDNページを見つけましたが、例をシナリオに変換する方法がわかりません:http: //msdn.microsoft.com/en-us/library/system.windows.frameworktemplate。 findname.aspx。
どんな助けでもいただければ幸いです!ありがとう!
wpf - ComboBoxバインディングを使用したWPFDataGridTemplateColumn(MVVMパターン)
次のWPFDataGrid+ComboBoxシナリオを使用します。
私は次のようなクラスのセットを持っています。
これで、希望する結果は、 Houseタイプの行のリストを表示するDataGridであり、列の1つに、ユーザーがHouse.HouseOwnerの値を変更できるComboBoxがあります。
このシナリオでは、グリッドのDataContextはViewModel.Housesであり、ComboBoxの場合、ItemsSourceをViewModel.Ownersにバインドする必要があります。
これも可能ですか?私はこれに頭を悩ませています...私ができる最善のことは、ItemsSourceを正しくバインドすることですが、ComboBox(DataGridTemplateColumn内)は各行にHouse.HouseOwnerの正しい値を表示していません。
注:ComboBoxを画像から取り出し、代わりにTextBlockをDataTemplateに配置すると、各行の値を正しく表示できますが、ItemsSourceの両方を取得し、選択範囲に正しい値を表示することはできません。 ..。。
コードビハインド内で、ウィンドウのDataContextをViewModelに設定し、グリッドのDataContextをViewModel.Housesに設定しました。このコンボボックス以外のすべてについては、機能しています...
問題のある列のXAMLは次のようになります。
これについての助けが欲しいです...しかし、少しのブードゥーが必要なようです...
wpf - Multibound フィールドと同じ順序で DataGridTemplateColumn (MultiBinding を使用) を並べ替える方法
FirstName、LastName プロパティを含むカスタム エンティティがあります (他のプロパティもあります)。このエンティティをデータグリッドにバインドすると、FullName (LastName, FirstName) が DataGridTemplateColumn として表示されます (MultiBinding と StringFormat を使用)。ユーザーはデータグリッド列を並べ替えることができ、FullName 列をクリックすると、レコードは LastName、次に FirstName で並べ替える必要があります (並べ替えの方向はクリック数に基づいて切り替わります)。上記のシナリオで目的の並べ替え (複数列) を実現できるかどうかを知りたいですか?
SortMemberPath 属性を使用してみましたが、指定できる列は 1 つだけです。
FullName という名前のカスタム ReadOnly プロパティをエンティティに追加すると機能することはわかっていますが、実装された MultiBinding で同じことを達成できるかどうかを理解したいだけです。
ありがとう、パンカイ