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

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

wpf - WPFのグループ名に応じて複数のエキスパンダーコントロールを折りたたむ/展開する方法は?

達成したいこと:グループスタイル内で同じグループ名を共有するすべてのエキスパンダーを折りたたみまたは展開すること。

子アイテムを表示するために、ListBoxとその中にネストされた別のListBoxがあります。子アイテムItemsSourceは、グループの説明が添付されたCollectionViewにバインドされます。

グループアイテムテンプレートは非常に単純です。

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

wpf - DataTemplate内でのCollectionViewSourceのバインド

「ContentTemplate」は、メンバー「FooList」(ObservableCollection)を持つオブジェクトを表示するDataTemplateです。

CollectionViewSourceを使用してそのFooListをフィルタリングできるようにする必要があります。これは通常簡単ですが、DataTemplate内でバインディングを機能させることができないようです。私はこれを試みました:

これから得られるエラーは次のとおりです。

System.Windows.Dataエラー:2:ターゲット要素の支配的なFrameworkElementまたはFrameworkContentElementが見つかりません。BindingExpression:Path = FooList; DataItem = null; ターゲット要素は'CollectionViewSource'(HashCode = 52991666); ターゲットプロパティは「ソース」(タイプ「オブジェクト」)です

これは、DataTemplateにバインドされたオブジェクトではなく、CollectionViewSourceで「FooList」を探しているように聞こえます。

だから...どうすればこれで正しいオブジェクトを見ることができますか?

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

silverlight - Silverlight の CollectionViewSource はスレッドセーフですか?

次のコードを考えると、これを理解しようとしていますが、UI スレッドで Refresh() を実行する必要がありますか? CollectionViewSource が実際にスレッド対応/安全なオブジェクトであるかどうか疑問に思っていますか? 正しいスレッドでの呼び出しをサポートするプロパティとメソッドが間違いなくありますが、それが開発者に任されているのか、それともオブジェクト内で実現されているのかはわかりません。

このスレッドは Silverlight で安全ですか?

それとも、このようなことをする必要がありますか?

0 投票する
6 に答える
28356 参照

c# - CollectionViewSourceからアイテム数を取得するには?

CollectionViewSource を使用して、ListBox に表示されるレコードをフィルター処理しています。xaml が続きます。

そして、これが私のコードビハインドです(このコードビハインドを気にしないでください。実際のアプリケーションでは、このシナリオに最適なMVVMを使用しています)。

質問: CollectionViewSource オブジェクトから "initialCount" と "filteredCount" を取得できる "SetSummary" メソッドを作成する際に助けが必要です。

ご関心をお寄せいただきありがとうございます。

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

.net - CollectionViewSourceと並べ替え(デンマーク語のアルファベット)

Nameプロパティを持ついくつかのオブジェクトを並べ替えたいと思います。これらのオブジェクトはCollectionViewSourceに保存されます。次の方法で並べ替えの説明を追加します。

ここで、方向は昇順/降順です。1つのケースを除いて、すべてが正常に機能します。デンマーク語のアルファベットで、たとえば名前を使用する場合:AarhusまたはAabenraは、「Z」の後にある必要があります。したがって、私が次の名前を持っている場合:Silkeborg、Aarhus、Aabenraa、Odenseは、次のようにソートする必要があります。

  • オーデンセシルケボーアーベンローオーフス

ただし、現在は次のようにソートされています。

  • Aabenraa Aarhus Odense Silkeborg

並べ替える前にカルチャ情報を変更しようとしましたが、機能しません。SQL Server 2005は、これらの値を正しく並べ替えます。

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

wpf - ComboBox で項目をグループ化する

単一と複数の 2 種類のオブジェクトを含む ListView があります。single は通常の TextBlock で、multiple はアイテムを含む ComboBox です。

ComboBox 内のアイテムをグループ化しようとしていますが、うまくいきません。出来ますか?それとも、別のアプローチをとるべきですか?

私が達成しようとしていること:

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

wpf - CollectionViewSourceは、ソースに初めてバインドされたときにのみ並べ替えます

CollectionViewSource(players)にバインドされたDataGridを使用しており、それ自体がListBox(levels)の現在選択されているアイテムにバインドされています。各アイテムには、DataGridで並べ替え/表示されるコレクションが含まれています。

..。

..。

(ここにC#コード全体、ここにXAMLコード、ここにテストプロジェクト全体-DataGridに加えて、DataGridの問題ではないことを確認するために、プレーヤー用の単純なリストボックスを追加しました)

問題は、プレーヤーが最初に表示されたときに並べ替えられることですが、リストボックスから別のレベルを選択するとすぐに並べ替えられなくなります。また、プレイヤーが最初に表示されたときに名前を変更すると、変更に応じて名前が並べ替えられますが、レベルが変更されると、名前は並べ替えられなくなります。

したがって、CollectionViewSourceのソースを変更すると、並べ替え機能が機能しなくなるように見えますが、その理由も修正方法もわかりません。誰かが私が間違っていることを知っていますか?

(私はフィルターを使ってテストを行いましたが、それは期待どおりに機能し続けました)

フレームワークは.NET4です。

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

wpf - 新しい行を追加した後、バインドされたコントロールが更新されないのはなぜですか?

データセットへのwpfドラッグアンドドロップデータバインディングを使用しています。BindingListCollectionView の AddNew メソッドを使用して、新しいデータ テーブル行を生成します。新しい行に値を設定し、BindingListCollectionView で CommitNew を呼び出します。バインドされたコントロールに割り当てられた値が表示されることを期待していますが、それらはすべて空白です。変更をデータベースに保存すると、コントロールが更新されますが、TableAdapterManager で UpdateAll を呼び出す前に、ユーザーが割り当てられた値を確認できるようにします。

背景:
wpf アプリケーションとは別のプロジェクトで、厳密に型指定されたデータセットを作成しました。私の wpf アプリはデータセット アプリケーションを参照します。型指定されたデータセットを指すオブジェクト データソースを wpf アプリに追加しました。フィールド/コントロールをデータソース ウィンドウから wpf デザイナー ウィンドウにドラッグしました。生成された xaml には、CollectionViewSource がデータセットとデータテーブルに正確にバインドされた Window.Resources セクションが含まれています。この CollectionViewSource は、デザイン サーフェイスにドラッグしたコントロールの DataContext です。すべてのコントロールは、TwoWay データバインディングを使用します。

ウィンドウが読み込まれると、(FindResource を使用して) xaml の CollectionViewSource への参照を取得します。次に、CollectionViewSource のビュー プロパティへの参照を取得し、それを BindingListCollectionView にキャストします。次に、BindingListCollectionView の AddNew メソッドを使用して新しい行を生成します (AddNew はオブジェクトとして返します)。オブジェクトを DataRowView にキャストし、その Row プロパティにアクセスします。次に、その行を厳密に型指定されたデータ テーブル行 (DataSet デザイナーによって生成) にキャストします。ここで、データ可能な行の列のいくつかに値を割り当てます。BindingListCollectionView で CommitNew を呼び出します。最後に、CollectionViewSource で MoveCurrentToFirst を呼び出します。

問題:
ウォッチ式を使用すると、データが CollectionView と BindingListCollectionView の両方の SourceCollection にあることがわかります。変更をデータベースに保存しない限り、バインドされたコントロールにデータが表示されない理由を誰か説明できますか?

コード (生成された XAML は非表示):

0 投票する
2 に答える
6371 参照

silverlight - 個々のアイテムのプロパティが変更されたときに、CollectionViewSource でフィルターや並べ替え順序を自動的に更新する方法は?

わかりましたので、この質問は Windows Phone 7/Silverlight (更新された WP7 ツール、2010 年 9 月) に関連しており、具体的には基になるObservableCollection<T>.

WP7 テンプレートのピボット コントロール アプリケーションをいじっていると、 の基になる項目を変更してもObservableCollection<T>、画面上の ListBox が更新されないという問題に遭遇しました。基本的に、サンプル アプリには 2 つのピボットがあり、1 つ目は基になるObservableCollection<T>に直接バインドされ、2 つ目は にバインドされますCollectionViewSource(つまり、基になる のフィルター処理されたビューを表しますObservableCollection<T>)。

次のように、 ObservableCollection<T>implementに追加されている基になるアイテム。INotifyPropertyChanged

次に、メイン クラスで、データ コレクションが作成されます (簡潔にするためにリストを省略します。また、他の項目とは異なり、LoadData() エントリの 3 つが IsSelected == true であることに注意してください)。

MainPage.xaml ファイルでは、最初のピボットがリストItemSourceに直接基づいていObservableCollection<T>ます。2 番目のピボット内では、画面上の ListBox のPropertyItemSourceが に設定されておりCollectionViewSource、その基になるソースは上記で設定された に基づいています。ObservableCollection<T>LoadData()

MainPage.xaml.cs では、上記のセクションのFilter属性にフィルター ハンドラーが割り当てられていることに注意してください。フィルター ハンドラーは、 trueに設定された項目をふるいにかけます。CollectionViewSourceResourcesIsSelected

また、データをロードした直後に を取得し、CollectionViewSourceそのデータ ソースをObservableCollection<T>リストとして設定することにも注意してください。これは、フィルタリングを実行できるベース データがあるためです。

アプリケーションが読み込まれると、期待どおりにデータが表示され、true のアイテムがObservableCollection<T>2IsSelected番目のピボットに表示されます。

代替テキスト 代替テキスト

アプリケーション バー アイコンのコメントを外したことに気付くでしょう。最初のアイコンは、クリックIsSelectedされたときに最後の項目のプロパティを切り替えObservableCollection<T>ます (MainPage.xaml.cs の最後の関数を参照)。

これが私の質問の要点です。該当するバー アイコンをクリックすると、リストの最後の項目のIsSelectedプロパティがいつ true に設定されているかがわかりますが、2 番目のピボットにはこの変更された項目が表示されません。ハンドラーがアイテムに対して起動されていることがわかりますがNotifyPropertyChanged()、コレクションはこの事実を認識していません。そのため、ピボット 2 のリスト ボックスは、コレクションに新しいアイテムが追加されるはずであるという事実を反映して変化しません。

ここで非常に基本的な/基本的なものが欠けていると確信していますが、それができない場合、コレクションを取得する最良の方法を知っている人はいますか?

この問題は、フィルタリングだけでなくソートにも当てはまると思います ((aCollectionViewSourceがソートに基づいている場合、ソートで使用されるアイテムのプロパティが変更された場合、コレクションのソート順はこれを次のように反映する必要があるという意味で)良い))

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

wpf - Entity Framework 4 - 外部エンティティによる並べ替え

私は得る

次の CollectionViewSource を使用すると:

DataContext はObservableCollection<Course>. 私はEntity Framework 4を使用しており、CourseSessionsはCourseのプロパティです:

この場合、データベースから出てくるデータを並べ替える以外に、どのように並べ替えを指定できますか?