問題タブ [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.
wpf - CollectionView.MoveCurrentToFirst を非同期的に呼び出しますか?
CollectionView.MoveCurrentToFirst を非同期的に呼び出しますか?
.net - スレッドセーフな CollectionView はどこで入手できますか?
バックグラウンド スレッドでビジネス オブジェクトのコレクションを更新すると、次のエラー メッセージが表示されます。
このタイプの CollectionView は、Dispatcher スレッドとは異なるスレッドからの SourceCollection への変更をサポートしていません。
わかりました、それは理にかなっています。ただし、CollectionView のどのバージョンが複数のスレッドをサポートしているのか、オブジェクトにそれを使用させるにはどうすればよいのかという疑問も生じます。
mvvm - コレクションビューitemssourceを含むコンボボックスは、モデルへの変更時に選択ボックスアイテムを更新しません
以前の長い投稿でごめんなさい。これが私の簡潔な(!)説明です。
コレクションビューをitemsSourceとしてコンボボックスにバインドし、そのselectedvalueをビューモデルのプロパティにバインドします。IsSynchronizedWithCurrentItem="False"を保持する必要があります。
ビューのソースリストを変更してから、ビューを更新します。変更された(追加、削除、編集された)アイテムは、コンボのアイテムリストに正しく表示されます。しかし、問題は選択したアイテムにあります。コンボのdisplaymemberパスでもあるプロパティを変更すると、変更されたプロパティ値がコンボの選択ボックスに反映されません。コンボドロップダウンを開くと、アイテムリストには正しく表示されますが、選択ボックスには表示されません。
XAMLでコンボボックスタグをリストボックスに変更すると(すべての属性はそのまま)、選択したアイテムのdisplaymemberプロパティ値が更新されると、変更はリストボックスの選択したアイテムに反映されます。
なぜこの問題ですか?
参考までに:
私のビューモデルには、ItemsSourceおよびSelectedValuerespとしてコンボにバインドされたプロパティEmployeeCollectionViewおよびSelectedEmployeeIdがあります。このVMは、INotifyPropertyChangedインターフェイスを実装します。
私のコア従業員クラス(そのリストはEmployeeCollectionViewのソースです)は、INotifyPropertyChangedのない単なるModelクラスです。
DisplayMemberPathは、employeeModelクラスの「Name」プロパティです。私はこれを何らかの方法で変更し、コンボ選択ボックスが値を更新することを期待しています。
SelectedEmployeeIdを0(itemsSourceからダミーの「-Select All-」従業員エントリを正しく選択する場所)に設定し、古い選択値を元に戻して更新してみました。しかし、役に立たない。古い値は私を古いラベルに戻します。ただし、アイテムコレクションには最新のエントリがあります。
ビューを更新する前にコンボボックスのIsEditable=Trueを作成し、更新後にIsEditable = Falseを作成すると、正常に動作します。
ただし、これはパッチであり、不要です。
どうも
Vinit Sankhe
wpf - WPF: ICollectionView や IEditableCollectionView などのビューの使用方法
構文は理解できますが、実際の使用方法はわかりません。多くの基本的なシナリオでは明らかですが、少し高度になるとすぐに頭が痛くなり始めます。
たとえば、多くの異なるビューがありますが、多くの場合、どれを使用すればよいか明確ではありません。また、常に 1 つだけを使用するか、組み合わせて使用する必要があります。ビューを ItemsControls の項目ソースとして使用しますか?
シナリオあげます。アプリで情報を表示し、編集および新規追加を許可する必要があるデータベースの項目があります。アイテムは階層を形成し、モデルはさまざまなタイプです。したがって、トップレベルには子供がいて、さらに子供がいます。
TreeView またはいくつかの項目コントロールで表示できます。ここでの問題は、チルレンのリストを返すルート要素の children プロパティにバインドする傾向があることです。editview.addnew() を呼び出したり、子をすぐにフィルタリングしたりできないように、子は実際にはビュー内にありません。問題は、子供たちもビューに含まれていること、およびその子供たちなどをどのように確認するかです。モデルがビューを返す必要がある場合、子の型ごと、または親ごとに個別のビューを作成する必要がありますか?
もう 1 つのことは、編集を許可する場合、コレクションを IEditableCollectionView に直接配置するか、最初に ICollectionView でラップする必要があるかということです (なぜそれが良いのですか)。
純粋な基本ではないビューを使用するための適切なガイドはありますか?
c# - WPF ICollectionView フィルターのリセット
CollectionView
から派生したものがありObservableCollection
ます:
私の問題は、フィルターの結果が何もない場合、フィルターをクリアし、他の条件で再フィルターしたいのですが、CollectionView
常に空です。
これらの方法でフィルターをリセットしようとしました:
と
しかし、どれも機能しませんでした。
のフィルターをリセットする方法についてアドバイスをいただけますCollectionView
か?
wpf - WPF DataGrid GroupItem DataTemplate 内の基になる ViewModel プロパティへのアクセス
ユーザー向けの UI 上のデータを表すグループ化された WPF DataGrid (標準の Microsoft のもの) があります。
グループ化された領域内の合計を表示するために、XAML で次のように GroupItem DataTemplate をオーバーライドしています。
現在、実行時に TextBlock テキストは CollectionViewGroup である DataContext にバインドされます。これは、グリッドがデータソースをラップする CollectionView にバインドされているため意味があります。
ただし、CollectionViewGroup は非常に制限されており、グループを配置する場所などのプロパティを格納している ViewModel にアクセスできず (最初にグリッドをレイアウトするときに列から座標を収集しています)、バインドする必要があります。たとえば、グループ内の特定の列の真上/真下に合計を表示できるようにします。
簡単に言うと、GroupItem を対象とする DataTemplate 内から CollectionView オブジェクト以外にもアクセスしようとしています。これを行う方法に関するご意見 (または、グループ合計テンプレートに表示する列ごとの合計合計を取得するためのより良い方法がある場合) は高く評価されます。
編集:これまでのところ、回避策はアイテムに「Parent ViewModel」プロパティを設定することですが、これによりモデルが肥大化しますが、これを行うためのより直接的な方法があればいいのにと思います。
wpf - グループ化されたCollectionViewのグループを水平に表示できますか?
この回答のとおり、ItemsPanelがWrapPanelであるListBoxを実装していますが、ひねりがあります。私のItemsSourceはグループ化されたCollectionViewです。リストボックスにGroupStyle
適用すると、その質問に示されているラッピングは機能しません。グループは常に垂直に表示されます。
私のアプリをスヌーピングしている理由は次のとおりです。
ご覧のとおり、ListBoxのItemsPanelTemplateとして定義されているWrapPanelは、各GroupItem内のItemsPresenterに表示されます。GroupItem自体を含むために、暗黙の垂直方向のStackPanel(ピンク色のボックスの一番上のアイテム)が作成されます。
この動作をオーバーライドして、GroupItemsをWrapPanelに配置する方法はありますか?ListBox全体を再テンプレート化する必要がありますか?
更新: ListBoxとCollectionViewグループ化で実際に行っていることを説明するために、少しXAMLを投稿しましょう。
これGroupStyle
はその中心です。これを削除すると、GroupItemsはレンダリングされず、スクリーンショットの(StackPanel)98の代わりにWrapPanel(上のスクリーンショットのGroupItemの下に表示されます)が表示されます。
wpf - フィルター処理された CollectionView が間違ったカウントを与える
ドキュメントによると、フィルター処理された CollectionView のカウントは、フィルターを通過したアイテムの数のみにする必要があります。このコードを考えると:
したがって、testCount1 が 6 で、testCount2 が 3 であると予想します。ただし、どちらも 6 です。CollectionView を手動で反復処理して項目をカウントすると、3 になりますが、Count は常に 6 を返します。
結果が修正されるかどうかを確認するために、CollectionView で Refresh を呼び出してみましたが、変更はありませんでした。ドキュメントは間違っていますか?CollectionView にバグはありますか? 見えないだけで何か悪いことをしていますか?
wpf - GroupStyles はどのように機能しますか?
ListCollectionView
ViewModel にバインドされた ListView コントロールがあります。
これらのアイテムをグループ化したかったのですが、いくつか問題がありました。
最初に VM でプロパティのグループ化を設定し、GroupStyle
.
C#:
XAML:
ただし、リストはカテゴリ名だけになり、アイテム自体を表示する方法はありません。
私はここで何が起こっているのかを完全には理解していません。のテンプレートを作成するとき、GroupStyle
実際にバインドしているのは何ですか? 以外のプロパティはありName
ますか?
GroupStyle
たとえば、を含めた場所に、既に作成した ListView に を追加しましたItemTemplate
。それは何かをいじっていGroupStyle
ますか?
リスト内のアイテムが別のクラスに属していて、それらが属しているクラスのインスタンスに基づいてグループ化したくない場合はどうなりますか (ID があります)。次に、この親クラスのプロパティとしてグループ名を取得します。それは可能ですか?
部分的な解決策:
ListView に適用されたスタイルに問題がありました。スタイルが何を妨害していたのか、私にはわかりません。
完全なソリューション
に設定されたパネルを使用することを選択したItemsPresenter
リストボックスでを使用していませんでした。GroupStyling が正しく機能するには、ItemsPresenter を使用する必要があるようです。ControlTemplate
IsItemsHost
true