問題タブ [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 - ICollectionView.Refreshはコレクションを再フィルタリングしません
ビューモデルに3つのカスケードICollectionView
があり、一方が他方に依存しています。最初のものは、ビューのコントロールにバインドされていませんが、マスター/詳細としてユーザーに表示される次の2つのキーフィルターとして使用されます。
私の問題は、メインのコレクションビューにフィルター述語をアタッチしたのですが、そこRefresh
から呼び出すと、フィルターにまったく移動しません。フィルタ述語から例外をスローしようとしたので、デバッガがそのコードに到達できない場合でも、コードが到着したことがわかりますが、例外はスローされませんでした。
私がRefreshと呼んでいて、フィルター述語に移動しない理由は何でしょうか。つまり、ビューが再作成されていないということですか。
wpf - 1 つの ObservableCollection から 2 つの ICollectionView をフィルタリングする
ICollectionView
ソースと同じインスタンスを 2 つ使用すると問題が発生しますObservableCollection
。
をフィルタリングするICollectionView
と、もう一方もICollectionView
同じフィルタでフィルタリングされているようです。ICollectionView
メソッドでをインスタンス化しますCollectionViewSource.GetDefaultView
。
これは予想される動作ですか?そうは思いませんが、何かが足りないのかもしれません。
これは、ViewModel のコンストラクターです。
は でListaVoci
ありICollectionView
、RootVM.CollectionVociCE
はObservableCollection
です。この ViewModel の 2 つの異なるインスタンスを持つ 2 つの異なるユーザー コントロールがあります。
これは、ユーザー コントロールのコンストラクターです。
どこFiltraListaVoci
ですか
wpf - ICollectionView フィルターの結果に従って UI を更新する方法は?
と の 2 つのコントロールがSearchFilter
ありSearchResult
ます。フィルターには、結果をフィルター処理するためのコマンドを含むボタンが含まれています。結果コントロールにはプロパティListView
へのバインディングがICollectionView
あります。
フィルターロジックを使用した私のモデルビュー:
問題は次のとおりです。
コマンドを含むボタンをフィルター コントロールから結果コントロールに移動すると、各フィルター アクションの後に UI が更新されます。しかし、私はこれらのものを別々に保ちたいと思っています。SearchList.Refresh()
andを使用しようとしましたが、成功しませんでしたPropertyChanged
。FilterTheResults()
wpf - コンボボックスをCollectionViewにバインドすると、フィルターで除外された要素が表示されます。なんで?
Wpfバインディングは、それをよく知っている人にとっては面白いものであり、初心者にとっては悪夢です。コメントアウトされたCollectionViewにコンボボックスをバインドすると、フィルターによって除外された要素を含むすべての要素がコントロールに表示されます。同じコンボボックスをICollectionViewにバインドすると、フィルター処理された要素のみが表示され、問題ありません。
これが、CollectionViewとICollectionViewを作成するために使用するコードです。
CollectionViewがC#コードからすべての要素を印刷していることを確認しましたが、フィルター処理された要素のみが含まれているため、CollectionViewは問題ありません。コンボボックスにバインドすると、フィルタリングされていない要素がすべて取得されるのはなぜですか?
ありがとうフィリッポ
c# - 述語の変換表現へ>>
Predicate<T> to Expression<Func<T, bool>>
何らかの方法でを変換することは可能ですか?
ICollectionViewのフィルターを使用して、次のIQueryable関数を使用したいと思います。
ありがとう
c# - ListView.Item.CurrentItem を操作する方法
これは私のxamlです:
これが私のコードビハインドです
currentSerie を使用するにはどうすればよいですか? 各アイテムに保存されているデータにアクセスするにはどうすればよいですか? プロパティにアクセスできず、それをオブジェクト以外のものに変換できません。
また興味深いことに、コードの出力は「オブジェクト」ではなく「シリーズ」であるため、ToString() と GetType() は適切な型を取得します。
任意の助けのためのthx
wpf - ICollectionView.Filterとして設定されたメソッドは、クラス内の他のプロパティがnullでなくてもnullと見なします
WPFで基本的なフィルター付きリストボックスを実装しようとしています。ユーザーが何かを入力すると、リストは入力されたフレーズで始まる値に絞り込まれます。
私は持っています:
- ビュー:
_
InstitutionFilteringString
データコンテキストとして設定されているViewModelクラスのプロパティにTextプロパティがバインドされているTextBox 、- ItemSourceプロパティがビューモデルの
ICollectionView
名前付きにバインドされているリストボックスInstitutions
- 上記のプロパティを持つViewModelクラス。
コード(無関係な部分が切り取られている):
ビューとバインディング:
だから、要点まで。のセッターInstitutionFilteringString
は正しく呼び出されます。ここからのアドバイスに従って、セッターはコレクションビューでRefresh()メソッドを呼び出します。FilterInstitutions()
メソッドが呼び出されます。
そして今バグ:文字列が1秒の直前に設定されていても、FilterInstitutions
メソッド内ではnullです。デバッガーを呼び出しスタックの下に移動すると、セッターの観点からは、入力された値に設定されたままですが、フィルタリングメソッド内ではnullになります。
セッターには、コメントアウトされたコード行があります。コメントを外すとバグは修正されますが、どのように行うべきかはほとんどわかりません。
私は何が間違っているのですか?
(わかりませんが、セッターとフィルタリングメソッドがクラスの2つの異なるインスタンスで動作しているように見えます。しかし、どうすれば1つのインスタンスだけを作成し、クラスはクローン化できません)
編集
すみません、嘘をついたようです。コンストラクターにブレークポイントを設定しましたが、実際にクラスの2つのインスタンスを作成し、両方に対してCollectionViewSource.GetDefaultView
同じインスタンスを返すようです。ICollectionView
でも、実際には同じコレクションに対して2つのビューが必要です。まあ、私はこの答えに従いました、そしてそれはうまくいくようです:)
silverlight - Silverlight - MVVM: 「ChildViewModel」で満たされた ICollectionView にバインドされたデータグリッドがデータを更新しない
同様のケースはまだ見つからないので、苦労しています。私は Silverlight のグリーンホーンであり、ICollectionView の更新に苦労しています。Refresh-Method は、データグリッド内のデータが変更されているにもかかわらず、実際にはデータを更新しません (デバッガーで確認し、データグリッドを数回並べ替えた後、最終的に変更が反映されます)。残念ながら、アプリケーションの構成全体を完全に台無しにしてしまいました。この問題は、私が実装した「MainViewModel-ChildViewModel」の原則に何らかの形で関連していると思います。
ここに私の構成があります:私のメインページでは、「メインビューモデル」をリソースとして追加しました。
Grid LayoutRoot は、そのデータ コンテキストをこのビューモデルに設定します。
「メイン ビューモデル」では、CollectionViewSource の形式でデータグリッドに表示されるデータを保持する ObservableCollection を定義します。ObservableCollection アイテムは、実際のデータと各データ行のロジックを表す「ChildViewModel」に基づいています。意味: ObservableCollection に追加される各アイテムは、「ChildViewModel」のタイプです。そのように設計したのは、(選択した関数またはセルのダブルクリックに基づいて) いくつかの「詳細ページ」を表示し、別のユーザーコントロールのデータを表示、変更、および操作できるようにするためです。データグリッドでの直接の変更は許可されていません。そうすれば、childviewmodel を次のページ (またはユーザー コントロール) に渡すだけで、データとそのロジックが渡されます。
db-fetch の Completed イベントハンドラで、observablecollection に childviewmodel を入力します。
さらに、この ICollectionView にバインドされたメインページにデータグリッドがあります。itemsourceは「ChildViewModel」のリストへ。プロパティはバインドされています:
これで、これらすべてが正常かつスムーズに機能します。機能ボタンをクリックすると、「Childviewmodel」のインスタンスまたはその継承で初期化された別のユーザーコントロールが開きます。(子ウィンドウである関数と他の関数を使用すると、すべての詳細などを表示するユーザーコントロールが表示されます)
たとえば、子ウィンドウ:
ここで、この子ウィンドウの日付を変更してメインページに戻ります。戻ったら、collectionView (Requests.Refresh();) で refresh を呼び出します -> しかし、データは更新されません。まあ..時々そうですが、ほとんどの場合、データグリッドの変更された列を2〜3回ソートするまでそうではありません(ヘッダーをクリックして並べ替えと並べ替え..および並べ替えを行います)
私は何を間違っていますか?誰でも助けることができますか?コンストラクト全体が乱雑ですか?
乾杯エライム
wpf - ICollectionView キャンセル 現在の変更中
クリックされた項目に応じて CurrentChanging イベントをキャンセルする方法を探しています。私のアプリケーションでは、 ICollectionView を使用して、タブコントロールでタブアイテムとしてレンダリングされるビューモデルのリストを保持しています。特定のビューモデルについては、ビューモデルをアクティブにする前にいくつかのプロパティ チェックを行う必要があります。そのためには、特定のビューモデルが次の現在のアイテムになるようにする必要があります。プロパティ チェックの結果に応じて、現在のアイテムの変更を許可またはキャンセルする必要があります (特定のビューモデルのみ)。他のすべてのビューモデルのプロパティ チェックを実行したくありません。
設定する前に次の現在のアイテムにアクセスする方法はありますか?
編集:
別のアイデア: currentchanged イベントでプロパティ チェックを行い、その結果に応じて親ビュー モデル (ビュー モデルのリストを含む) にメッセージを送信して、現在のビュー モデルを最初に移動するようにトリガーします。これにより、新しい現在の変更イベントがトリガーされると予想されますが、そうではありません。現在のアイテムは常に、最初の現在の変更イベントの前に選択されたビュー モデルです。
そこで何が起こっているのですか?
wpf - MenuItem と IcollectionView
メニューに利用可能な言語のリストを表示したい。言語は ICollectionView として利用できます。
これはコードです:
Languages は、カルチャのリストから既定のビューとして作成された ICollectionView です。メニューが正しく表示されます。メニューの選択が変更されたときに CurrentChanged イベントにバインドしたいのですが、IsSynchronizedWithCurrentItem プロパティがないため、どうすればよいでしょうか?
一度に 1 つの項目だけをチェックできるようにする方法はありますか?