問題タブ [icollectionview]
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 - CollectionViewSource.SortDescriptions を使用した並べ替えが遅いのはなぜですか?
これは、 の列ヘッダーをクリックしたときのデフォルトの並べ替え方法ですDataGrid
。基になるリストに 100,000 項目が含まれている場合、ビューを更新するのに約 20 秒かかります。SortDescription
にs を設定すると、同じ遅延が観察されますCollectionView
。
リストを使用するListCollectionView.CustomSort
か、並べ替えて再割り当てすることによる並べ替えは、ほぼ瞬時に機能します。
この遅れはなぜですか?これは、バインドされたプロパティに対する単なる「反射税」ですか?
wpf - WPFICollectionViewフィルタリング
ComboBoxでアイテムをフィルタリングするためのコードを作成しました。
私の質問は、どうやってそれをするのですか?
リフレクションを使用したこのソリューションは非常に遅い可能性があると思います。
wpf - コレクションに添付されているすべてのICollectionViewを検索する
同じコレクションに基づく複数のフィルターがあります。つまり、同じコレクションをさまざまな方法で表示しています。私ができるようにしたいのは、プロパティが変更されたときにすべてのCollectionViewを更新するように依頼することです(コレクションビューは、アイテムがコレクションに追加/削除された場合にのみ再フィルタリングされるため)。特定のコレクションに関連付けられているすべてのcollectionViewを検索する方法はありますか?コレクションビューとコレクションの間に双方向のリンクがありますか、またはこのリンクを決定する方法がありますか。
PS私は答えがだとは思わない
これにより、コレクションに関連付けられているすべてのICollectionViewではなく、コレクションのデフォルトのビューが表示されます。
c# - WPFObservableCollectionCollectionView.CurrentChangedが起動しない
の1つに問題がありICollectionView
ます。のイベントは発生していませんICollectionView
。CurrentChanged
以下の私のコードをご覧ください。
XAML:
AND C#(ViewModel)
助けてください。前もって感謝します。
wpf - WPF でビューのビューを作成する
ICollectionView
では、既存の からを作成する必要がありますICollectionView
。アイデアは、既存のビューに設定されているフィルター/グループ化/並べ替えを取得して、その「ベース」ビューから他のビューを作成し、実際には「レイヤー化」またはフィルターの集約などを行うことができるということです。
ObservableCollection<T>
ソースコレクション( )が更新されたとき、およびデータアイテムが更新されたときに、Refresh()
メソッドを呼び出すように、アイテムを「自動的に」更新するエンドビューが必要です。元のコレクションと最後のビューの間のすべてのビューがわからないため、すべてのビューで Refresh を呼び出さないようにする必要があり、非常にRefresh()
遅いです。
独自のビュー クラスをローリングすることは避けようとしています。.net ライブラリに既に存在するものを (強く) 使用したいと考えています。
アップデート
これについて Microsoft に連絡があります。少なくとも、 WPF博士が私に言ったことと同じ問題を他の人が抱えていることを私は知っています。
c# - 基になるDataTableの行がゼロの場合、ICollectionView.SortDescriptionsソートは機能しません
ListView内にDataGridを持つWPFアプリがあります。
大量の列生成または動的な列生成を実行します(表示しているレポートに応じて)
次に、クエリを実行し、DataTableを行ごとに入力します。このクエリにはデータがある場合とない場合があります(問題ありません。空のグリッドが必要です)。ListViewのItemsSourceをDataTableのDefaultViewに設定します。
次に(ユーザーのアプリのパス使用状況を確認し、列に並べ替えを設定します)以下の並べ替え方法:
ゼロDataTable行のシナリオでは、並べ替えは「保持」されませんか?また、動的に行を追加すると、並べ替えられた順序にはなりません。
並べ替えが適用されたときにDataTableに少なくとも1行があり、DataTableに動的に行を追加すると、行は正しく並べ替えられます。
これを複製するスタンドアロンアプリを作成しました...
これは煩わしいので、DataTableが空かどうかを確認するチェックを追加して、並べ替えを再適用できます...
誰もがここで何が起こっているのか知っています、そして私は何か間違ったことをしていますか?
参考:MSDNからのものである場合、これに基づいたもの: http : //msdn.microsoft.com/en-us/library/ms745786.aspx
アップデート:
「保持」ではない並べ替えは、ICollectionView.SortDescriptionsにSortDescriptionがありますが、追加されたデータを並べ替えていないことを意味します。これも、SortDescriptionが追加されたときに行がある場合、基になるDataTableに行がない場合にのみ発生し、その後、すべてうまくいきます〜
wpf - ListViewでのICollectionViewの並べ替えの問題
ICollectionView
並べ替えとフィルタリングを有効にする必要がある状況を処理するために、WPFが導入されたのを見ました。アイテムを分類する記事もほとんど見ませんでしたが、私の主な関心事は、なぜ私のアプローチが失敗するのかということです。私のコードを見てみましょう:
コードビハインドでは、アイテムがクリックされたとき、私は次のようにしています:
したがって、のヘッダーListBox
がクリックされるたびに、アイテムを並べ替える必要があります。Sourceというプロパティを使用してコレクションを保持し、を呼び出してコレクションを使用していlvItems.DataContext = this.Source.
ますが、コードが機能していないようです。
c# - IEditableCollectionView によって追加されるオブジェクトの種類は何ですか?
IEditableCollectionView addNew() メソッドを使用してオブジェクトを追加するのはかなりまともです。ただし、私が持っている汎用コードでどれだけうまく機能するかはわかりません。
基本クラスの ObservableCollection があります。ユーザーが見たいものに応じて、DerivedA または DerivedB (または複数の他の派生型クラス) で埋めることができます。1 つ以上のタイプを持つことはありません。これについて次の質問があります。番号 1 が主な質問です。
1) addNew() メソッドが呼び出されたときに追加されるオブジェクトのタイプ。私はベースを推測していますが、確かではありません。Base が抽象の場合はどうなりますか? とにかく、特定のタイプを追加することを確認できますか、それとも最も関連性の高いタイプをすでに追加するように実装されていますか?
2) 派生クラスを使用するときに ObservableCollection を使用する際に問題が発生することを求めていますか?
3) 派生クラスはすべて IEditableObject を個別に実装しますが、Base は実装しません。実装するときにメソッドを定義する必要があると思ったので、私の愚かさのせいです。それらを抽象として定義し、派生クラスでそれらをオーバーライドできますか? これを行わないと、IEditableCollection で問題が発生します。
アップデート:
項目 3 を正常に修正しました) 基本クラスは iEditableObject を実装し、抽象仮想メソッドをその派生クラスにスローします。リストが派生アイテムで満たされていても、addNew メソッドは機能しません。
私は1つの半解決策を見てきました。.Net Framework 4.0 は、追加する項目を定義できる AddNewItem という新しいメソッドを実装しています。パラメーターのないコンストラクターと基本クラスの問題を解決する必要があります。しかし、私は3.5で働いています
私にできることはありますか?
wpf - プロパティ値の変更後にWPFデータバインディングを再確立する
私は現在 ICollectionView で遊んでいますが、「なぜ」は理解していると思うが、「どうすれば修正できるのか」という問題に直面しています。:)
ICollectionView にデータバインドされた ComboBox があり、最初は次のコードで設定されています。
IEnumerable<string>
新しいものを生成し、上記と同じコードで NameView を再度設定するコードを実行するまで、すべてがうまく機能します。これを行うと、CurrentItem
正しく機能しなくなります。
ComboBoxes にデータバインドする前にこの問題に遭遇しました。プロパティを newに設定する代わりにandObservableCollection<string>
を使用して、「バインド解除」の問題を回避します。Clear()
Add()
ObservableCollection<string>
ObservableCollection<string>
私の質問は次のとおりです。 1. プロパティを新しいコレクションに設定できるようにしたい場合は、どうにかして新しいコレクションとのデータバインディングを再確立できますか? もしそうなら、どのように?そうでない場合、これが根本的に不可能である理由の背後にある WPFisms を説明できますか? ObservableCollection<string>
2.またはの変更に対処する最善の方法は何ICollectionView
ですか? クリアして追加するだけの私のアプローチは、それを行う唯一の方法ですか?
wpf - ICollectionView の CurrentItem にバインドする方法
の現在のアイテムにプロパティを追加したいのですが、ICollectionView
どうすればよいですか? はICollectionView
コンボ ボックスへのバインドに使用されますが、別のコントロールをICollectionView
の選択した項目にバインドするにはどうすればよいですか?