問題タブ [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.

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

wpf - ICollectionView.Refreshはコレクションを再フィルタリングしません

ビューモデルに3つのカスケードICollectionViewがあり、一方が他方に依存しています。最初のものは、ビューのコントロールにバインドされていませんが、マスター/詳細としてユーザーに表示される次の2つのキーフィルターとして使用されます。

私の問題は、メインのコレクションビューにフィルター述語をアタッチしたのですが、そこRefreshから呼び出すと、フィルターにまったく移動しません。フィルタ述語から例外をスローしようとしたので、デバッガがそのコードに到達できない場合でも、コードが到着したことがわかりますが、例外はスローされませんでした。

私がRefreshと呼んでいて、フィルター述語に移動しない理由は何でしょうか。つまり、ビューが再作成されていないということですか。

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

wpf - 1 つの ObservableCollection から 2 つの ICollectionView をフィルタリングする

ICollectionViewソースと同じインスタンスを 2 つ使用すると問題が発生しますObservableCollection

をフィルタリングするICollectionViewと、もう一方もICollectionView同じフィルタでフィルタリングされているようです。ICollectionViewメソッドでをインスタンス化しますCollectionViewSource.GetDefaultView

これは予想される動作ですか?そうは思いませんが、何かが足りないのかもしれません。

これは、ViewModel のコンストラクターです。

は でListaVociありICollectionViewRootVM.CollectionVociCEObservableCollectionです。この ViewModel の 2 つの異なるインスタンスを持つ 2 つの異なるユーザー コントロールがあります。

これは、ユーザー コントロールのコンストラクターです。

どこFiltraListaVociですか

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

wpf - ICollectionView フィルターの結果に従って UI を更新する方法は?

と の 2 つのコントロールがSearchFilterありSearchResultます。フィルターには、結果をフィルター処理するためのコマンドを含むボタンが含まれています。結果コントロールにはプロパティListViewへのバインディングがICollectionViewあります。

フィルターロジックを使用した私のモデルビュー:

問題は次のとおりです。
コマンドを含むボタンをフィルター コントロールから結果コントロールに移動すると、各フィルター アクションの後に UI が更新されます。しかし、私はこれらのものを別々に保ちたいと思っています。SearchList.Refresh()andを使用しようとしましたが、成功しませんでしたPropertyChangedFilterTheResults()

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

wpf - コンボボックスをCollectionViewにバインドすると、フィルターで除外された要素が表示されます。なんで?

Wpfバインディングは、それをよく知っている人にとっては面白いものであり、初心者にとっては悪夢です。コメントアウトされたCollectionViewにコンボボックスをバインドすると、フィルターによって除外された要素を含むすべての要素がコントロールに表示されます。同じコンボボックスをICollectionViewにバインドすると、フィルター処理された要素のみが表示され、問題ありません。

これが、CollectionViewとICollectionViewを作成するために使用するコードです。

CollectionViewがC#コードからすべての要素を印刷していることを確認しましたが、フィルター処理された要素のみが含まれているため、CollectionViewは問題ありません。コンボボックスにバインドすると、フィルタリングされていない要素がすべて取得されるのはなぜですか?

ありがとうフィリッポ

0 投票する
3 に答える
7369 参照

c# - 述語の変換表現へ>>

Predicate<T> to Expression<Func<T, bool>>何らかの方法でを変換することは可能ですか?

ICollectionViewのフィルターを使用して、次のIQueryable関数を使用したいと思います。

ありがとう

0 投票する
3 に答える
944 参照

c# - ListView.Item.CurrentItem を操作する方法

これは私のxamlです:

これが私のコードビハインドです

currentSerie を使用するにはどうすればよいですか? 各アイテムに保存されているデータにアクセスするにはどうすればよいですか? プロパティにアクセスできず、それをオブジェクト以外のものに変換できません。

また興味深いことに、コードの出力は「オブジェクト」ではなく「シリーズ」であるため、ToString() と GetType() は適切な型を取得します。

任意の助けのためのthx

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

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つのビューが必要です。まあ、私はこの答えに従いました、そしてそれはうまくいくようです:)

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

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回ソートするまでそうではありません(ヘッダーをクリックして並べ替えと並べ替え..および並べ替えを行います)

私は何を間違っていますか?誰でも助けることができますか?コンストラクト全体が乱雑ですか?

乾杯エライム

0 投票する
0 に答える
542 参照

wpf - ICollectionView キャンセル 現在の変更中

クリックされた項目に応じて CurrentChanging イベントをキャンセルする方法を探しています。私のアプリケーションでは、 ICollectionView を使用して、タブコントロールでタブアイテムとしてレンダリングされるビューモデルのリストを保持しています。特定のビューモデルについては、ビューモデルをアクティブにする前にいくつかのプロパティ チェックを行う必要があります。そのためには、特定のビューモデルが次の現在のアイテムになるようにする必要があります。プロパティ チェックの結果に応じて、現在のアイテムの変更を許可またはキャンセルする必要があります (特定のビューモデルのみ)。他のすべてのビューモデルのプロパティ チェックを実行したくありません。

設定する前に次の現在のアイテムにアクセスする方法はありますか?

編集:

別のアイデア: currentchanged イベントでプロパティ チェックを行い、その結果に応じて親ビュー モデル (ビュー モデルのリストを含む) にメッセージを送信して、現在のビュー モデルを最初に移動するようにトリガーします。これにより、新しい現在の変更イベントがトリガーされると予想されますが、そうではありません。現在のアイテムは常に、最初の現在の変更イベントの前に選択されたビュー モデルです。

そこで何が起こっているのですか?

0 投票する
0 に答える
80 参照

wpf - MenuItem と IcollectionView

メニューに利用可能な言語のリストを表示したい。言語は ICollectionView として利用できます。

これはコードです:

Languages は、カルチャのリストから既定のビューとして作成された ICollectionView です。メニューが正しく表示されます。メニューの選択が変更されたときに CurrentChanged イベントにバインドしたいのですが、IsSynchronizedWithCurrentItem プロパティがないため、どうすればよいでしょうか?

一度に 1 つの項目だけをチェックできるようにする方法はありますか?