問題タブ [collectionview]

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 に答える
281 参照

wpf - CollectionView.MoveCurrentToFirst を非同期的に呼び出しますか?

CollectionView.MoveCurrentToFirst を非同期的に呼び出しますか?

0 投票する
12 に答える
36296 参照

.net - スレッドセーフな CollectionView はどこで入手できますか?

バックグラウンド スレッドでビジネス オブジェクトのコレクションを更新すると、次のエラー メッセージが表示されます。

このタイプの CollectionView は、Dispatcher スレッドとは異なるスレッドからの SourceCollection への変更をサポートしていません。

わかりました、それは理にかなっています。ただし、CollectionView のどのバージョンが複数のスレッドをサポートしているのか、オブジェクトにそれを使用させるにはどうすればよいのかという疑問も生じます。

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

mvvm - コレクションビューitemssourceを含むコンボボックスは、モデルへの変更時に選択ボックスアイテムを更新しません

以前の長い投稿でごめんなさい。これが私の簡潔な(!)説明です。

コレクションビューをitemsSourceとしてコンボボックスにバインドし、そのselectedvalueをビューモデルのプロパティにバインドします。IsSynchronizedWithCurrentItem="False"を保持する必要があります。

ビューのソースリストを変更してから、ビューを更新します。変更された(追加、削除、編集された)アイテムは、コンボのアイテムリストに正しく表示されます。しかし、問題は選択したアイテムにあります。コンボのdisplaymemberパスでもあるプロパティを変更すると、変更されたプロパティ値がコンボの選択ボックスに反映されません。コンボドロップダウンを開くと、アイテムリストには正しく表示されますが、選択ボックスには表示されません。

XAMLでコンボボックスタグをリストボックスに変更すると(すべての属性はそのまま)、選択したアイテムのdisplaymemberプロパティ値が更新されると、変更はリストボックスの選択したアイテムに反映されます。

なぜこの問題ですか?

参考までに:

  1. 私のビューモデルには、ItemsSourceおよびSelectedValuerespとしてコンボにバインドされたプロパティEmployeeCollectionViewおよびSelectedEmployeeIdがあります。このVMは、INotifyPropertyChangedインターフェイスを実装します。

  2. 私のコア従業員クラス(そのリストはEmployeeCollectionViewのソースです)は、INotifyPropertyChangedのない単なるModelクラスです。

  3. DisplayMemberPathは、employeeModelクラスの「Name」プロパティです。私はこれを何らかの方法で変更し、コンボ選択ボックスが値を更新することを期待しています。

  4. SelectedEmployeeIdを0(itemsSourceからダミーの「-Select All-」従業員エントリを正しく選択する場所)に設定し、古い選択値を元に戻して更新してみました。しかし、役に立たない。古い値は私を古いラベルに戻します。ただし、アイテムコレクションには最新のエントリがあります。

  5. ビューを更新する前にコンボボックスのIsEditable=Trueを作成し、更新後にIsEditable = Falseを作成すると、正常に動作します。

ただし、これはパッチであり、不要です。

どうも

Vinit Sankhe

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

wpf - WPF: ICollectionView や IEditableCollectionView などのビューの使用方法

構文は理解できますが、実際の使用方法はわかりません。多くの基本的なシナリオでは明らかですが、少し高度になるとすぐに頭が痛くなり始めます。

たとえば、多くの異なるビューがありますが、多くの場合、どれを使用すればよいか明確ではありません。また、常に 1 つだけを使用するか、組み合わせて使用​​する必要があります。ビューを ItemsControls の項目ソースとして使用しますか?

シナリオあげます。アプリで情報を表示し、編集および新規追加を許可する必要があるデータベースの項目があります。アイテムは階層を形成し、モデルはさまざまなタイプです。したがって、トップレベルには子供がいて、さらに子供がいます。

TreeView またはいくつかの項目コントロールで表示できます。ここでの問題は、チルレンのリストを返すルート要素の children プロパティにバインドする傾向があることです。editview.addnew() を呼び出したり、子をすぐにフィルタリングしたりできないように、子は実際にはビュー内にありません。問題は、子供たちもビューに含まれていること、およびその子供たちなどをどのように確認するかです。モデルがビューを返す必要がある場合、子の型ごと、または親ごとに個別のビューを作成する必要がありますか?

もう 1 つのことは、編集を許可する場合、コレクションを IEditableCollectionView に直接配置するか、最初に ICollectionView でラップする必要があるかということです (なぜそれが良いのですか)。

純粋な基本ではないビューを使用するための適切なガイドはありますか?

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

c# - WPF ICollectionView フィルターのリセット

CollectionViewから派生したものがありObservableCollectionます:

私の問題は、フィルターの結果が何もない場合、フィルターをクリアし、他の条件で再フィルターしたいのですが、CollectionView常に空です。

これらの方法でフィルターをリセットしようとしました:

しかし、どれも機能しませんでした。

のフィルターをリセットする方法についてアドバイスをいただけますCollectionViewか?

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

wpf - WPF DataGrid GroupItem DataTemplate 内の基になる ViewModel プロパティへのアクセス

ユーザー向けの UI 上のデータを表すグループ化された WPF DataGrid (標準の Microsoft のもの) があります。

グループ化された領域内の合計を表示するために、XAML で次のように GroupItem DataTemplate をオーバーライドしています。

現在、実行時に TextBlock テキストは CollectionViewGroup である DataContext にバインドされます。これは、グリッドがデータソースをラップする CollectionView にバインドされているため意味があります。

ただし、CollectionViewGroup は非常に制限されており、グループを配置する場所などのプロパティを格納している ViewModel にアクセスできず (最初にグリッドをレイアウトするときに列から座標を収集しています)、バインドする必要があります。たとえば、グループ内の特定の列の真上/真下に合計を表示できるようにします。

簡単に言うと、GroupItem を対象とする DataTemplate 内から CollectionView オブジェクト以外にもアクセスしようとしています。これを行う方法に関するご意見 (または、グループ合計テンプレートに表示する列ごとの合計合計を取得するためのより良い方法がある場合) は高く評価されます。

編集:これまでのところ、回避策はアイテムに「Parent ViewModel」プロパティを設定することですが、これによりモデルが肥大化しますが、これを行うためのより直接的な方法があればいいのにと思います。

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

wpf - グループ化されたCollectionViewのグループを水平に表示できますか?

この回答のとおり、ItemsPanelがWrapPanelであるListBoxを実装していますが、ひねりがあります。私のItemsSourceはグループ化されたCollectionViewです。リストボックスにGroupStyle適用すると、その質問に示されているラッピングは機能しません。グループは常に垂直に表示されます。

私のアプリをスヌーピングしている理由は次のとおりです

GroupItemにWrapPanelを表示するスヌープ

ご覧のとおり、ListBoxのItemsPanelTemplateとして定義されているWrapPanelは、各GroupItem内のItemsPresenterに表示されます。GroupItem自体を含むために、暗黙の垂直方向のStackPanel(ピンク色のボックスの一番上のアイテム)が作成されます。

この動作をオーバーライドして、GroupItemsをWrapPanelに配置する方法はありますか?ListBox全体を再テンプレート化する必要がありますか?

更新: ListBoxとCollectionViewグループ化で実際に行っていることを説明するために、少しXAMLを投稿しましょう。

これGroupStyleはその中心です。これを削除すると、GroupItemsはレンダリングされず、スクリーンショットの(StackPanel)98の代わりにWrapPanel(上のスクリーンショットのGroupItemの下に表示されます)が表示されます。

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

wpf - フィルター処理された CollectionView が間違ったカウントを与える

ドキュメントによると、フィルター処理された CollectionView のカウントは、フィルターを通過したアイテムの数のみにする必要があります。このコードを考えると:

したがって、testCount1 が 6 で、testCount2 が 3 であると予想します。ただし、どちらも 6 です。CollectionView を手動で反復処理して項目をカウントすると、3 になりますが、Count は常に 6 を返します。

結果が修正されるかどうかを確認するために、CollectionView で Refresh を呼び出してみましたが、変更はありませんでした。ドキュメントは間違っていますか?CollectionView にバグはありますか? 見えないだけで何か悪いことをしていますか?

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

c# - 述語はできますか for CollectionView.Filter be in a different class?

I have a TagTypeController class that provides a collection view to a controller for a WPF UserControl, which holds a private reference to the collection view.

I have a TagTypeController class that provides a collection view to a controller for a WPF UserControl, which holds a private reference to the collection view.

In the TagTypeController, when creating the CollectionView, I'm setting the filter delegate

I would like to locate all the logic for filtering, etc. of that collectionview in the TagTypeController class. The problem is, when the text changes in the TextBox of the UserControl, I'm responding to that event by delegating to the controller for the UserControl. When I ask the tagTypeList to refresh, it does not call the filterTagTypes method. Is it not possible to have the filter delegate in a different class?

Thanks.

EDIT: adding requested code


iis express 7.5 roaming profile visual studio 2010 sp1

Unless I redirect the My Documents folder to a local copy IIS Express fails to start with the following error message: Filename: redirection.config Error: Cannot read configuration file

This happens when starting a new web project from studio or even is I just double click on the iisexpress.exe file.

Any way around this or must I continue to redirec the My Documents folder

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

wpf - GroupStyles はどのように機能しますか?

ListCollectionViewViewModel にバインドされた ListView コントロールがあります。

これらのアイテムをグループ化したかったのですが、いくつか問題がありました。

最初に VM でプロパティのグループ化を設定し、GroupStyle.

C#:

XAML:

ただし、リストはカテゴリ名だけになり、アイテム自体を表示する方法はありません。

私はここで何が起こっているのかを完全には理解していません。のテンプレートを作成するとき、GroupStyle実際にバインドしているのは何ですか? 以外のプロパティはありNameますか?

GroupStyleたとえば、を含めた場所に、既に作成した ListView に を追加しましたItemTemplate。それは何かをいじっていGroupStyleますか?

リスト内のアイテムが別のクラスに属していて、それらが属しているクラスのインスタンスに基づいてグループ化したくない場合はどうなりますか (ID があります)。次に、この親クラスのプロパティとしてグループ名を取得します。それは可能ですか?

部分的な解決策:

ListView に適用されたスタイルに問題がありました。スタイルが何を妨害していたのか、私にはわかりません。

完全なソリューション

に設定されたパネルを使用することを選択したItemsPresenterリストボックスでを使用していませんでした。GroupStyling が正しく機能するには、ItemsPresenter を使用する必要があるようです。ControlTemplateIsItemsHosttrue