問題タブ [datagridtextcolumn]

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

wpf - WPF DataGridTextColumn にバックスペース文字が含まれています

"BS" (別名 Backspace、別名 \b) を、DataGridTextColumn にデータバインドされた文字列プロパティの値にする方法:

XAML

C#

データベースに、カテゴリの値として [BS] を含むエントリが見つかりました。データベースへの途中で他のコードがプロパティを変更しないことが保証されています。TextBox に [BS] を入力する方法がわからないため、デバッグ中に状況を再現できませんでした。何とか間に合ったのはたった一人のお客さん…

これがどのように起こるかについて何か考えはありますか? プロパティセッターにチェックを実装しようとしていましたが、ここで本当の問題を理解しようとしています。

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

c# - WPFコンバーターを使用してデータグリッドセルの背景色を変更する

私はWPFデータグリッドを持っています。比較する必要がある datetime 型の 2 つの列があり、比較結果に従って、現在の列と行の 2 つのセルにセルの背景色を設定します。これをデータグリッド行ごとに行います。これを行うには、コンバーターを使用します。

コンバーター:

ここで 2 つの問題があります。

  1. date1 > date2 セルの背景色が茶色に更新されていない場合。
  2. date1 <= date2 の場合、デフォルトのデータグリッド セルの背景色が返されるはずですが、これを行う方法がわかりません。

また、データグリッドの行スタイルを定義しました。行スタイルは、いくつかの条件に従って行全体の背景色を設定します。ただし、この場合、これらの条件は満たされませんが、上記の列スタイル (date1.Date > date2.Date) では満たされるため、セルの背景を茶色で塗りつぶす必要があります。

この投稿を利用して、行スタイルの条件が満たされ、たとえば背景全体がオレンジに設定されている場合、セルの列スタイル (この投稿の上記) も満たされ、茶色でペイントする必要がある場合、どちらが優先されますか? 行のスタイルまたはセルのスタイル?

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

c# - WinForms: DataGridView - セルが編集されているときにコンボボックスを表示する

C# アプリでは、すべてのセルを DataGridTextBoxCol として持つ DatagridView があります。グリッドには、バインドされていない値が動的に入力されます。グリッドにはさまざまな種類の食品があります。私の必要性は、ユーザーがセルをクリック/編集したいときに、セルの代わりに食品のリストを含むコンボボックスが表示されることです。それらがセル内の値である場合、その値はコンボで選択する必要があります。ユーザーが入力すると、アイテムがコンボで選択されます。これは私がこれまでに試したことです:

このコンボallergensCmbを現在のセルに配置するには

上記のdgv_CellBeginEditイベント コードと同様に、コンボはセルの位置に表示されません。セルの位置は X=0、Y=11 - 1 列 1 行目のセルです。フォームの寸法には関係ありません。グリッドセルのコンボから選択された項目の値を取得および設定するために、CellEndEdit および allergensCmb_SelectedIndexChanged イベントを実装してみました。しかし、100%完全に機能するものはありません。selectedIndexChanged イベントでは、セルがアクティブでなくなったため、現在のセルが失われました。現在のセルを取得できないか、それが汚れている場合!!

手掛かり、このタイプのコントロールを実装するにはどうすればよいですか - DataGridView の現在のセルにコンボボックスを表示します。いろいろ調べて試してみましたが、期待通りの結果は得られませんでした。

どんな助けでも大歓迎です。

//////////////////////////////////////// ******** **** 更新 ///////////////////////////////////////

あなたが両方とも DataGridViewComboBoxColumn を使用することを提案したように、私はしました:

これで問題ありません。グリッドでは、各セルが ComboBox のみとして表示されます。通常のテキストとしてのみ表示し、編集中にのみコンボボックスとして表示するにはどうすればよいですか。EditingControlShowing イベントを使用する理由は何ですか?そのロジックがわかりません?? 値を変更してフラグisCellAssignGridChangedをtrueに設定する必要があるので、DBを更新できます。

この部分に光を当ててください。

ありがとう

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

wpf - DataGridTextColumn 幅の設定

MVVM WPF アプリケーションがあります。

WPF データグリッドに DataGridTextColumn があります。width プロパティをコンバーターにバインドし、セル値を渡したいと思います。この列では、この列のすべてのセルが空の場合があるため、すべてのセルが空の場合は列幅を固定値 20 (MinWidth と同じ) に設定し、それ以外の場合は 50 に設定します。問題はそのコンバーターは呼び出されていません。

単純化して興味深い部分に集中するために、関連するコードのみをここに投稿します。

コンバーター:

私の最終的な目標は、すべてのセルが空のときに列幅を 20 に設定することです。それ以外の場合は幅を 50 に設定します。なんで?

更新: Finllay @Andy が提案することを実行しました: ビュー モデルからビューの datagridtextcolumn 幅プロパティにプロパティをバインドします。ビュー モデルのこのプロパティは、すべての列セルに対して反復処理を行い、それに応じて幅を設定します。下記参照。私の問題は、ビュー モデルのこのプロパティ 'EntryDateColumnWidth' は、アプリケーションが起動されたときに初めて起動し、OnPropertyChanged("EntryDateColumnWidth") を呼び出したときに発生しないことです。

モデルを見る:

また、ビュー モデルから、データグリッドの項目のリストを設定したら、次のように実行します。

このプロパティは DataGridLength オブジェクトを返します。これは、列セルが空でない場合に幅を自動に設定する必要があるためです。

: ViewModelBase は、INotifyPropertyChanged を実装する抽象クラスです。

ビュー:

クラス BindingProxy :

更新 2 :

依存オブジェクト クラス:

リソース ディクショナリ (DictionaryDO.xaml) のインスタンス:

それをリソース ディクショナリ (app.xaml) にマージします

窓口

モデルを見る:

しかし、列幅は更新されていません...