問題タブ [collectionviewsource]
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# - CollectionViewSource にバインドされた Combobox に初期値を設定する
WPF と MVVM パターンを使用しています。リストにバインドされているすべてのコンボボックスは正常に機能しますが、CollectionViewSource
フィルタリングに を使用するカスケード ドロップダウンがあります。セッターと同様にフィルタリングは機能しますが(回答を検索しているときに別の人が問題を抱えているのを見ました)、初期値を設定できません。いくつかの方法を試しましたが、選択した項目に影響を与えるものはないようです。
ビューモデル ctor、およびプロパティ セッター (モデル コンストラクターで _ticket.SelectedSubstatus が設定されます):
ここにコンボボックスXAMLがあります
からの現在のアイテムは、CollectionViewSource
MoveCurrentTo() によって設定された直後、およびテストによってチェックされたときに null です。私は何を間違っていますか?
silverlight-4.0 - コレクションを永続的に並べ替える
collectionviewsourceによってユーザーに公開される監視可能なコレクションがあります。コレクション内のアイテムのプロパティの1つはsortorderです。ユーザーがこのコレクションを永続的に再利用し、変更をデータベースに伝達できるようにしようとしています。
リストボックスに表示されている個々のアイテムを再分類できるCVSが機能しています。ただし、item.sortorder == cvs.currentindexを変更する必要があり、これを行う適切な方法を見つけるのに問題があります。
編集
明らかに私は十分に明確ではありませんでした。Sortorderは、オブジェクトの一部であるDB内のフィールドであり、ユーザーがリストコントロールに表示されるアイテムの位置を制御できるようにします。表示されているアイテムの現在のインデックスと等しくなるようにsortorderフィールドの値を変更することで、将来これらのアイテムの並べ替え方法を変更できるようにユーザーに提供しようとしています。
アイテムの現在のsortorder値は3です。
ユーザーは表示されたリストアイテムを位置0(つまり最初の位置)に移動します
アイテム新しいsortorder=0元のsortorderを持つアイテムは1などになります
これは、ソートされたCVSをループし、Item.SortOrder=CVS.Item.indexを作成することで実現されます。
wpf - WPF CollectionViewSource.Filter パフォーマンスと DataTrigger
Entity Framework は、ChangeTracker.State というプロパティを持つ追跡可能なエンティティを提供します。これを使用して、エンティティが削除されているかどうかを識別できます。
私たちのリストでは、削除されたエンティティを表示したくありません。
どちらが速いですか?
方法 1: CollectionViewSource.Filter を使用してレコードをテストおよび削除する
方法 2: DataTrigger を ItemTemplate.DataTemplate に追加して、項目をテストおよび非表示にする
ありがとう。
.net - WPF - CollectionViewSource フィルターが機能しない
コードプロジェクトの記事http://www.codeproject.com/KB/WPF/MultipleSelectionControl.aspxから複数の項目を選択できるコントロールを取得しました。基本的に、2 つのリストボックスがあります。1つはすべてのアイテムから始まり、ユーザーがそれらのいくつかを選択すると、他のリストボックスに移動します。Control は、2 つのリストの 2 つの依存関係プロパティを定義します。最初にすべての項目を含むプロパティは AvailableItems です。コントロールの ControlTemplate で次のように使用されます。
プロジェクトでコントロールを次のように使用します。
CollectionViewSource にバインドし、Data_Filter というフィルター関数を定義して、AvailableItems をフィルター処理しようとしています。AllItems は List オブジェクトであり、文字列が含まれています。コントロールが初期化されると、Data_Filter が AllItems のすべてのアイテムに対して呼び出され、FilterEventArgs の受け入れられたプロパティが各アイテムに対して正しく設定されます。ただし、コントロールは Data_Filter を無視してすべてのアイテムを表示します。コントロールの実装では、ICollectionView オブジェクトは次のように定義されます。
これにより、コントロールがビューをスキップしているのではないかと疑われます。コントロールの実装でフィルタリングを実装しようとすることはできますが、これは良い解決策ではありません。助言がありますか?
data-binding - WindowsPhone7-「書き込み時にフィルター」機能のパフォーマンスの問題
ユーザーがフィルター文字列をテキストボックスに入力しているときにリストボックスがリアルタイムでフィルター処理される機能を実装すると、パフォーマンスに問題が発生します。私が作成しようとしている機能は、WP7の通話履歴検索に似ています。
これをテストするための簡単なプロジェクトを作成し、以下の重要な部分をコピーして貼り付けました。基本的に私はTextBoxを持っており、ユーザーはリストボックスにバインドされたデータをフィルタリングするために使用される文字列を書き込むことになっています。このフィルタリングは、フィルターボタンなどをタップした後ではなく、リアルタイムで実行する必要があります。
ListBoxは、ObservableCollectionをソースとして使用するCollectionViewSourceにバインドされています。テキストボックスに何かが入力されると、その値はビューモデルのプロパティに即座にデータバインドされます。ビューモデルプロパティのセッターは、CollectionViewSourceのフィルタリングを起動し、ListBoxのコンテンツを更新します。
私が行っている実際のプロジェクトでは、ListBoxに100個ほどのアイテムを含めることができます。
関連するXAMLは次のとおりです。
ViewModelへのインスタントバインディングをトリガーするためのコードビハインド-プロパティ:
ViewModel:
リストにデータバインドされるAnItemクラス:
質問:
すべて正常に機能していますが、TextBoxへの書き込みとListBoxの更新の間には恐ろしい遅れがあります。
私は単にそれを間違っているのですか?もしそうなら、私は私のアプローチをどのように変えるべきですか?これは非常に一般的な要件だと思うので、おそらくそれに対するいくつかの素晴らしい解決策があります。
wpf - CollectionViewSource で FirstOrDefault() を使用するとハンドルされない例外が発生しますか?
エンティティを CollectionViewSource にバインドしました。次に、コード ビハインドでクエリを実行します。id フィールドは PK であるため、FirstOrDefault() を使用してアプリの実行を高速化する必要があると思います。しかし、それは常に例外をスローします...
XAML :
コードビハインド:
未処理の例外をスローします。
しかし、式ツリーから FirstOrDefault() を省略すると、次のようになります。
それはうまくいきます!
では、なぜ FirstOrDefault() がエラーを引き起こすのでしょうか?
この場合、FirstOrDefault() を使用する必要がありますか? FirstOrDefault() を使用すると、アプリの実行が速くなりますか?
ps : 編集フォームを設計しているので、単一のアイテムをロードしたいだけです。
c# - CollectionViewSource での MVVM の使用
CollectionViewSource を使用していくつかのデータを表示しようとしていますが、私が見たすべての例/チュートリアルには、ObservableCollection を継承する別のクラスで使用するカスタム クラスが組み込まれています。CollectionViewSource を使用するのは初めてで、これは MVVM の 3 番目の実装にすぎないため、プログラミング パターンを誤解している可能性がありますが、私の質問は、ObservableCollection クラスやカスタム クラスをどこに配置すればよいかということです。
モデルに入れるべきだと思いますが、何がビューにバインドされるのかわかりません。これらを外部クラスとして構築し、Model/ViewModel で参照するだけですか?
どんな助けでも大歓迎です
wpf - VB.NET の CollectionView で複数のフィルターを使用する方法
CollectionView で複数のフィルターを使用しようとしています - このアプローチを使用しています: http://bea.stollnitz.com/blog/?p=32
CollectionView にフィルターを追加するための構文を作成しました
Filter メソッドに追加のパラメーターを追加する方法を知りたいと思います。
例えば
Deletegate を使用してこれを行うことは可能でしょうか? 私はそれらにあまり慣れていませんが:
追加のフィルター パラメーターを使用して VB.NET に複数の CollectionViewSource フィルターを追加するための正しい方向を教えてもらえますか?
ありがとうベン
wpf - CollectionViewSource で複数レベルの並べ替えを実装する方法
私はもともとこれを LINQ クエリとして投稿しました - 動作するようになり、問題があることに気付きました。LINQ クエリを使用して、CollectionViewSource 内のアイテムを選択/フィルター処理および順序付けすることはできません (なぜ最初にこれをチェックしなかったのか、なぜこれが可能でないのか?)。
そのため、フィルター処理された CollectionViewSource を並べ替える方法を見つけようとしています。
私の CollectionViewSource は ObservableCollection(Of MediaItems) にバインドされています。MediaItems には子/ネストされた List(Of AdvertOptions) が含まれます。
親 ObservableCollection(Of MediaItems) - クラスは次のように構成されています。
次の基準を満たさない MediaItems を除外しています。
CollectionViewSource がフィルター処理された後、2 つの並べ替え順序に基づいてアイテムを並べ替える必要があります。これにより、CollectionViewSource ナビゲーション メソッド (MoveCurrentToX など) を使用して、結果の CollectionViewSource アイテムをアプリケーション内でナビゲートできるようになります。
適用する必要がある並べ替え順序は次のとおりです。
- AdOptions.Priority (降順)
- カウンター別(昇順)
私がフィルタリングしている方法は、これらの関数を使用することです:
参考までに、次のようにフィルターを追加しています。
フィルタリングされたアイテムをソートする方法を考え出す必要があります。問題は、CollectionViewSource での並べ替えのサポートが制限されているように見えることです。以下を使用してカウンターを簡単に並べ替えることができます。
しかし、それは私の 2 番目の並べ替えです。最初に AdOptions.Priority (適切な項目をサブ選択する必要があります) で並べ替え、次に Counter で並べ替えます。
グループを作成すると役立つかどうか疑問に思っていましたが、探している並べ替え機能が提供されるかどうかはわかりません。
CollectionViewSource の代わりに ListCollectionView に変換してから CustomSort を使用する可能性を検討しましたが、これを実装する方法がわかりません。ネストされたリスト内の値。
誰かが私の成果を達成するのを助けるために貢献できますか?
ベン
wpf - Can you filter a single item from a CollectionViewSource
I want to filter out a single item in my CollectionViewSource
I already have other filters applied, but I'm trying to find a way of filtering out an individual item without having to call a function that iterates through all items.
Is this possible?