問題タブ [compositecollection]
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 - CompositeCollection が Freezable でないのはなぜですか?
MVVM パターンを使用してアプリケーションを作成しています。ビューの DataContext プロパティを ViewModel のインスタンスに設定して、ビューにデータを提供しています。通常、そこから Binding を使用して、自分のやり方で進めます。
最近、ViewModel が提供する「アイテムの選択」というコレクションを超えた「追加の」要素を持つ ComboBox を実装しようとしました。
問題は、 CompositeCollection が Freezable: Freezable Objects Overviewではないことです。これにより、静的な ComboBoxItem のみが表示され、バインディング式の結果は表示されません。
この問題に対する私の最初の反応は、 Freezableである CompositeCollection の独自のバージョンを実装することでした。しかし、これは次の疑問を投げかけます。
そもそも CompositeCollection が Freezable でないのはなぜですか?
私の懸念は、一般的にこれらの決定には理由があり、Freezable を継承しなかった理由を説明するのに十分な知識がないと感じていることです。このコレクションを実装できることはわかっていますが、実装した場合、パフォーマンスに測定可能な違いが生じるのではないかと心配しています。
どんな助けでも大歓迎です。ありがとう!
また、Nullまたはその他の特別な値を挿入し、テンプレートまたは値コンバーターを提供して、必要なことを実行できることを認識していることに注意してください。これは私が興味を持っている質問ではありません...上記の太字の質問のみです。
アップデート:
ArsenMkrt のコメントによってもたらされたさらなる調査の後、これは実際には見落としであると信じるに至りました。証拠は次のとおりです。
- と呼ばれるフリーズ可能なコレクションがあります
FreezableCollection<T>
。CollectionViews を生成しないため、私のニーズには直接不適切です。 - MSFT の Sam Bent は、上記のリンクで同様のことを述べています。彼の連絡先はまだわかりませんが、機会があれば彼と話し合う予定です.
この問題を回避するための現在の計画は、CompositeCollection と のプロパティを持つ新しいコレクションを作成することFreezableCollection<T>
です。うまくいくかどうかはわかりませんが、次のようなことを考えています。
誰かがより良い選択肢を持っているなら、私はそれを聞きたいです!
c# - CompositeCollection でのグループ化の欠如を回避する
GroupDescriptor を CompositeCollection に追加しようとすると、CompositeCollection がグループ化をサポートしていないことを通知する例外が発生します。
この制限に対する適切な回避策を誰かが見つけたかどうかを知りたいです。私は一緒に「圧縮」してグループ化しようとしている2つのコレクションを持っています。参考になれば、私はコレクション間のグループ化には興味がありません。コレクション自体をグループ化するだけです。
datagrid - CompositeCollection Edit で DataGrid がクラッシュする
私はデータグリッドを持っています。その ItemsSource は、ViewModel を介して ModelView の CompositeCollection にバインドされます。CompositeCollection は、2 つの ObservableCollection で構成されます。
グリッドの表示は問題ありません。コレクションを見ることができました。ただし、行の 1 つを編集しようとすると、「'EditItem' はこのビューでは許可されていません」というクラッシュ (NotSupportedException) が発生します。
行を編集可能にするにはどうすればよいですか? グリッドの各行を表す ModelViews を編集できる必要があります。
アイテムソースにバインドするために使用する CompositeCollection プロパティ コードは次のとおりです。 正確なコードを投稿することは許可されていないため、これは正確なコードではありませんが、コレクションの作成方法と同じロジックです。
public CompositeCollection ModelViewsCollection { get { CollectionContainer modelViewContainer;
modelViewContainer= 新しい CollectionContainer(); modelViewContainer.Collection= this.ModelViewCollection2; modelViewCollection .Add(modelViewContainer);
wpf - CollectionView機能を使用してCompositeCollectionを処理する方法は?
CompositeCollectionの現在の場所が変更されたときに通知を受け取る方法はありますか?
私はCompositeCollectionをCollectionViewで監視する必要があります。どんなアイデアでも歓迎します。
wpf - Any idea on how to sort a CompositeCollection?
I have a CompositeCollection that consists of ObservableCollections of two types: Companies and Contacts. Contact has a property FullName while Company has a property Name.
I want to apply sorting so the collections are mixed by their types but sorted by their name, example:
Itzhak Perlman
John Doe
Microsoft
Sarah Moore
StackOverflow
Walter Richardson
Note that I bound the ItemsControl to a CollectionViewSource that its Source is set the CompositeCollection, it's view becomes a CompositeCollectionView, it's an internal type, if I explicitly set its type to ListCollectionView, it only contains the CollectionContainers as its items.
Desired solution is a workaround to enable sorting, filtering and grouping on a CompositeCollections, I don't care to override and create my own CompositeCollection, I just don't know how I can override this and enable its functionality in xaml.
wpf - CompositeCollectionはComboBoxオートコンプリート機能を壊しますか?
押す
みなさん、こんにちは!
(オートコンプリート)でWPF ComboBoxを使用していて、IsTextSearchEnabled="True"
そのItemsSource-PropertyをCompositeCollectionにバインドしたいと思います。残念ながら、ComboboxはCompositeCollection内のCollectionContainerによって提供されるアイテムを認識していないようです。それらは表示されますが、オートコンプリートでは選択されません。
例を試して、「def」と入力してください。「def」が選択されない場合は、私が直面している問題を再現しています。いくつかのマージされたコレクション機能を使用しながら、解決策、私が監視したこと、または回避するための実用的な方法はありますか?
ありがとう!-ダートラックス
.net - CompositeCollection のアイテムを繰り返し処理する
次のコードを検討してください。
リストはGUIに正しいデータを表示しますが
このデータが必要ですが (ListBox を参照せずに)、取得できません
wpf - コレクションの依存関係プロパティをユーザーコントロールのメニューにデータバインドする
独自のコンテキストメニューを備えたユーザーコントロールがありますが、そのメニューに項目を追加する必要があります。
私が採用したアプローチは、ContextMenuItemsと呼ばれる依存関係プロパティを持つことでした。
次に、CompositeCollectionを使用して、コントロールの静的メニュー項目をホストから提供されたリストと組み合わせました。
そのリソースにバインドすると、次のように表示されます。
- テスト
- (コレクション)
2番目のメニュー項目は、コレクションにバインドされており、アクセスできることを証明しています。メニュー項目に追加したテストコンバーターがあり、コンバーターメソッドで壊れますが、コンバーターをCollectionContainerに追加しても呼び出されません。
最後に、出力ウィンドウに次のエラーが表示されます。
System.Windows.Dataエラー:4:参照'RelativeSource FindAncestor、AncestorType ='System.Windows.Controls.UserControl'、AncestorLevel='1''でバインドするためのソースが見つかりません。BindingExpression:Path = ContextMenuItems; DataItem = null; ターゲット要素は'CollectionContainer'(HashCode = 41005040); ターゲットプロパティは「コレクション」(タイプ「IEnumerable」)です。
wpf - WPF と MVVM で CompositeCollection を使用する方法
MVVM を使用した WPF アプリがあります。フォームに DataGrid があり、DataGrid には ObservableCollection を含む ComboBox を持つ列があります。
コンボボックスの先頭に「リストから選択してください」を追加したい。これを行うために CompositeCollection を使用しようとしましたが、ObservableCollection リストをコンボボックスにバインドできませんでしたが、「選択してください」は正常にバインドされました。
このシナリオで ComboBox の上部に「選択してください」を追加するにはどうすればよいですか? 誰かがこれの例を持っていますか?
これが私が試したことです: XAML:
wpf - CompositeCollectionのMenuItemのバインドが機能しないWPF
コマンドを複合コレクションのメニュー項目にバインドする際に問題があります。のMenuItem
一部はContextMenu
で定義されていUserControl.Resources
ます。
問題は、New ラベルのバインドが機能していないことです。MenuItem を複合コレクションの外に配置すると、機能します。何か案は?