問題タブ [listcollectionview]
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.
c# - 1 つの項目を変更した後に Expander ヘッダーの前景色を変更する
みなさん、こんにちは。
エキスパンダーの項目を変更した後、エキスパンダー ヘッダーの前景色を変更するのに問題があります。
ここに私がすでに持っている私のWPFスニペットがあります:
値を変更した後に ListCollectionView を更新しようとしましたが、パフォーマンスが非常に悪いです。
助けてくれてありがとう...
更新:GroupStyle
これが定義されている
内の私のWPFスニペットです:
...そしてこのViewのViewModel:
wpf - ListCollectionView の変更時に SelectedItem が更新されている
私は WPF、MVVM、およびエンティティ フレームワークを使用しています。
私はデータ入力アプリケーションを使用しており、アプリで変更のキャンセルを有効にしようとしています。変更がキャンセルされると、すべての値が元の値にリセットされます。EF側のセットアップはすべて正しく行われていると思います。基本的に、変更されたリストにある場合、すべてのエンティティを未変更に設定するだけです。
私の問題は、ViewModel に戻ったときで、すべてのフィールドと派生プロパティを再設定しようとしています。最大の煩わしさはコレクションです。ListCollectionView にバインドする複数のコンボ ボックス コントロールがあり、SelectedItem を表すビュー モデルに追加のプロパティがあります。コレクションをリセットするとき、プロセスがコレクションを含むすべてのプロパティを再開できるようにしていました。コレクションを変更すると、選択したプロパティも変更しようとします。これに関する問題は、選択したプロパティを変更すると、バッキングエンティティが新しい値で更新され (ユーザーが項目を選択したかのように)、技術的に値を取り戻すことができないことです。
私が保存していたとき、私は実際に逆の問題を抱えていました。保存後、フォームは非編集モードになり、値は古い値に設定されます。編集中にフォームを再度開くと、正しい値が読み込まれます。これを修正するために、フォームに IsSynchronizedWithCurrentItem=true を追加しました。しかし今、編集中に値が古い値に戻るという逆の問題が発生しています。
この問題に対する私の現在の回避策は、コレクションが既に作成されていることを示す状態変数を保持することです。また、ビューモデルの再セットアップ時にコレクションのリセットをスキップします。
c# - ListCollectionView CustomSort 2 条件
ViewModel に ListCollectionView があり、これを ListBox にバインドします。文字列のコレクションがあり、最初に文字列の長さで並べ替え、次にアルファベット順に並べ替えたいとします。どうすればいいですか?
現在、独自の IComparer クラスを実装して CustomSort を使用して長さで並べ替えるように管理していますが、同じ長さの文字列でもアルファベット順に並べ替えるにはどうすればよいですか。
wpf - CollectionView を使用して INotifyDataErrorInfo をリッスンする方法
次のシナリオがあります。
XAML:
Nodes はObservableCollection
、ListCollectionView を含むカスタムです。
T
この場合は、Node
私が興味を持っているもの (NodeResults と呼びます) を含む多くのプロパティを持つオブジェクトです。
とNodeResults
:
ObservableValidatableModelBase
を実装INotifyDataErrorInfo
し、そのエラーを というコレクションに保存しますerrors
。
私がやりたいことは、 の個々Node
の がCollectionView
に通知してListView
、無効な (無効な がある) 個々のエントリがNodeResults
画面上で強調表示されるようにすることです。
NodeResults
私の最初の本能は、Node が'ErrorsChanged
イベントにサブスクライブしてバブリングする必要があるためBubbleErrorsChanged
、クラスのメソッドObservableValidatableModelBase
が必要であるということですが、それは機能していないようです。
別の可能性は - ListView には検証の例外を表示するためのデフォルトのテンプレートもありますか? そうでない場合、このようなものが機能する必要がありますか? (そうではありません...)
エラーが発生したかどうかに応じて、 Brushes.RedValidationExceptionToColourConverter
または Brushes.White を返すだけNothing
です。
注: テキスト ボックスを Nodes.NodeResults.SomeProperty に直接バインドしても問題なく動作し、期待どおりの結果が得られます。
wpf - .Net ItemCollection で IndexOf オブジェクトを取得する方法
ViewModel から、WPF DataGrid 内の行のフォーカスとハイライトをプログラムで移動する必要があります。DataGrid には 1 つの列しかありません。
そして、データコンテキスト ViewModel では:
これは、DataGrid の ItemSource をバインドしているため、データ フィールド「descr」の ViewModel にプロパティ自体がなくても機能します。
ViewModel では、View から ItemCollection を次のように渡すことで、View DataGrid のアイテムの ItemCollection にアクセスできます。
ViewModel に戻り、次のように DataGrid 項目を読み込みます。
その ItemCollection の DataGrid プロパティを保持できるように、ItemCollection へのキャストを保持したいと考えています。問題は、ItemCollection の IndexOf メソッドが機能していないことです。これを行ってクラス オブジェクト項目の 1 つのインデックスを見つけようとすると、-1 しか取得できません。
EDIT ------- これはメソッド try IndesOf のコード全体です
編集 --------------------------------- これは簡単なアプローチですが、ラムダ/フィルター式についてはまだ助けが必要ですとメソッド呼び出し
編集終了 ----------------------
デバッガーでは、_dgItems にクラス オブジェクトが表示されます。これを行うと、うまくいきます。
ただし、パラメーターが単なるクラス オブジェクトの場合、IndexOf メソッドは機能しません。問題は、DataGrid アイテムの ItemCollection へのキャストにあると思います。クラス Object をキャストする必要があります。myobject を、DataGrid から取得した ItemCollection で認識できるものに変更します。回避策はありますか? ありがとうございました。
c# - list を使用してオブジェクト リストを単一のリストに変換する
次のようなオブジェクトを含むオブジェクトリストがあります。
userrolesList
は 1 つ以上持つことができますuserroleobjects
。
このリストを別のシステムに送信する必要がありますが、別のシステムは次のようなオブジェクトのリストしか受け入れません。
この場合、1 人のユーザーが 10 個のロールを持っている場合、10 個の異なるオブジェクトを他のシステムに送信する必要があります。これを簡単に作成し、パフォーマンスに影響を与えないようにする方法はありますか?