問題タブ [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.
c# - 監視可能なコレクションの階層を単一の監視可能なコレクションにフラット化する
次のような観察可能なコレクションの階層があります。
IItem
(または ) を指定すると、すべての子アイテムObservableCollection<IItem>
を再帰的に含む他の監視可能なコレクションを構築したいと考えています。IItem
このコレクションは、(たとえば) WPF リスト ビューのデータ ソースとして使用されます。
これらの項目のいずれかを変更して追加の子を持つようにすると、結果の監視可能なコレクションが更新されます。循環参照がないことに注意してください。
私はCompositeCollection クラスを認識しており、これが役立つはずだと確信しています (必要なのは、 の各子の複合コレクションを再帰的に含む複合コレクションChildren
だけだと思います) が、適切な方法がわかりませんこのクラスには、子を必要な複合コレクションに「テンプレート化」する機能がないため、これを行います。
wpf - バインドされた CompositeCollection を使用するように ComboBox を変換するにはどうすればよいですか?
バインドされた項目ソースを持つ ComboBox があります...私は例を重要な部分に落としました:
これは機能しますが、「その他...」と呼ばれる代替機能をトリガーする単一の手動項目をコンボボックスに追加したいので、CompositeCollection の使用に移行する必要があります...次のように:
CompositeCollection を使用すると、バインドされたアイテムが取り込まれません。マニュアルの ComboBoxItem "Other..." のみが表示されます。そのアイテムを削除すると、リストは空になります。コンバーターにブレークポイントをアタッチすると、何もキャッチされません。これは、バインディングが試行されていないことを示しているようです。
CompositeCollection のバインド機能がどのように発生しているかについて、明らかに理解していません。誰かが私の XAML のエラーを確認したり、不足しているものを説明したりできますか?
wpf - 「すべて選択」のバインド/トリガー-WPFのCheckBox ComboBoxItem
ユーザー定義の項目リストに加えて、「すべて選択」項目を含む WPF CustomControl CheckComboBox を作成しようとしています。「すべて選択」を選択すると、それに応じてリスト内のすべての項目がチェックされます。「すべて選択」項目がクリックされた場合、どのように対応すればよいですか? いろいろ試してみたのですが、CheckComboBox.csのプロパティ「SelectAll」が一向に入力されません。
これが私の現在のコードです。
Generic.xaml
CheckComboBox.cs
テストデータの設定:
編集: CheckComboBox.cs のSelectAll DependencyProperty を次のコードに置き換えましたが、OnSelectAll が入力されていません 。SelectAll コンボボックスは、何らかの理由でバインドをトリガーしません。
c# - コレクション コンテナを使用した複合コレクションを xaml から C# に変換する
基本的に、xaml で行ったことを C# に変換したいと考えています。これは、次の問題に関連しています: xaml の文字列をプロパティにバインドする
私の場合にプロキシが必要で使用される理由は次のとおりです 。 -遺伝性の/
CollectionContainer にバインドできるようにするプロキシ クラス:
コントロールのリソースで定義されたプロキシ:
最終的に C# に変換したい Xaml コード:
View Model コレクションには入れたくないが、ユーザーに表示したい文字列定数:
wpf - 複合コレクションの変更に関する通知を送信する方法
私は複合コレクションを持っています。コードビハインドからアイテムを変更した後、ビューを更新したいと思います。しかし、ビューに通知する方法がわかりません。を試してみましたINotifyCollectionChanged
が、うまくいきませんでした。
c# - CompositeCollection を使用した TreeView、展開矢印が表示されない
MyItem および MyGroup オブジェクトで構成された CompositeCollection にバインドされた TreeView があります。
クラス定義:
XAML:
ツリーを設定するためのコード:
問題は、コードを実行するたびに First と Second のみが表示されますが、Second の横に展開矢印が表示されず、展開できないことです。デバッグは、g2 が子として g3 を持っていることを示していますが、TreeView コントロールには存在しません。
どうすれば修正できますか?目的は、できるだけ少ないコードでそれを行うことです。抽象化レイヤーとラッパークラスの負荷を追加しないようにしています...
これらを経て、私の問題を解決しませんでした:
wpf - CompositeCollection にバインドされている場合、ComboBox が適切なアイテムを選択しない
動物のコレクションにバインドされた ComboBox があります。その中から好きな動物を選んでいます。バインドされたアイテムの上に静的な null アイテムが必要です。CompositeCollection を使用して宣言します。ComboBox がバインドされている場合、最初のお気に入りの動物は選択されません。どうすれば修正できますか?ここでも同様の問題がありますが、まだ解決されていません。
所見:
- 静的アイテムへのバインドは機能します。つまり、最初のお気に入りの動物がない場合、静的アイテムが選択されます。
- 静的アイテムを削除すると、問題はなくなります。もちろん、これにより CompositeCollection とこの質問全体が時代遅れになります。
私はすでにこれらの対策を適用しました:
- CollectionContainer は、ここで概説されているようにプロパティに直接バインドできません。
- ここで提案されているように、複合コレクションも静的リソースに移動されます。
問題を示すために C# コードと XAML を完成させます。
XAML
wpf - CompositeCollection にオブジェクト インスタンスをアイテムとして追加する
他のサブコレクションに加えて、単一のアイテムを CompositeCollection (ComboBox のソースとして使用) に追加する方法はありますか?
- 項目のオブジェクト インスタンスは ViewModel のプロパティです
- 追加されたアイテムと他のサブコレクションのアイテムの両方が同じタイプです。
ここに私が持っているものがあります:
編集:それは多少働いた
ただし、(1)静的プロパティが必要であり、(2)添付されたコマンド(簡潔にするためにここには示されていません)では、返される選択されたアイテムのタイプはObjectDataProvider
のタイプではなくMyViewModel.AnotherItem
であり、ViewModel に問題を引き起こします。
.net - wpfの複合コレクションで選択したアイテムを取得する
リストボックスの itemsSource を複合コレクションに設定しようとしています。
ただし、selectedItem とのバインディングは機能していません。アイテムが選択されたときにビューモデルで選択されたアイテムを取得するにはどうすればよいですか?