問題タブ [itemcontainergenerator]
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.
.net - Silverlight サーチャー
Windows Phone 7 のサーチャーに似たようなことをしようとしています。私が行ったことは次のとおりです。TextChanged イベントを持つ TextBox と、HyperlinkButtons の Listbox があります。私が試したことはこれです:
そして、ここにxamlがあります:
ここでの問題は、68 個以上の要素がある場合、ContainerFromItem が null の ListBoxItems を返すだけです...
何か案が?
皆さん、ありがとうございました
wpf - 非ItemsControlに仮想化を実装するには、ItemContainerGeneratorを改良するか、単純なカスタム生成を実装する方が良いですか?
ItemsControl のサブクラスに基づいていない独自の特別な Items ベースのコントロール/パネル コンボを展開しています (ここでは説明しませんが、これを実行できない理由は複数あります) が、コントロールは処理します何千ものデータ項目があるため、Visual
仮想化を実装したいと考えています。
私たちが疑問に思っているのは、既存の ItemContainerGenerator クラスをデザインに組み込んだり、独自の仮想化方法を導入したりする方が理にかなっているということです。
一方では、ItemContainerGenerator はすでに仮想化を処理しており、非常に効率的であり、ほとんどの場合、ゼロから始めるよりも実証済みのコードの方が望ましいですが、他方では、ICG は特に使用するために設計されており、その機能に依存しています。 ItemsControl ですが、このコントロールはそうではありません。さらに、これはコンテナージェネレーターですが、この場合、データ項目を表す特定の既知のビジュアルを生成してレイアウトするだけで済みます。
さて、私は物事を単純化しすぎているかもしれませんが、ViewPort に表示されるアイテムを決定し、それらのアイテムの視覚的表現が作成、測定、配置されていることを確認し、残っているものを破棄する必要があるだけです。ビジュアルを作成しました。すべてを追跡するには、おそらく DataItem の ViewModel オブジェクトに ItemVisual 添付プロパティを使用して、単純なアイテムからビジュアルへのマッピング スキームが必要なようです。そうすれば、アイテムが削除/破壊されたときに、既存のビジュアルがあるかどうかを確認し、存在する場合はそれを破壊します。
とはいえ、独自の視覚的仮想化を簡単に展開してはならない理由を誰か思いつきますか? 繰り返しますが、ICG はこれを行いますが、それはセミを店に連れて行って卵を手に入れることなのだろうかと思っています。
wpf - ItemContainerGeneratorにアイテムのコンテナーを生成させる方法、またはUI仮想化が有効になっているときにTreeViewを展開されたノードにスクロールする方法
ScrollIntoView()
TreeViewにはメソッドがありません唯一の方法は、対応するデータアイテムコンテナ
を呼び出すことです。
ただし、ノードが非表示で、コンテナがまだ生成されていない場合は、を返します。TreeVewItem.BringIntoView()
ItemsControl.ItemContainerGenerator.ContainerFromItem()
null
したがって、ItemContainerGeneratorにアイテムのコンテナを作成させる方法があるはずです。
合理的な質問は次のとおりです。ノードを拡張して非表示のままにするにはどうすればよいですか。
簡単!IsExpanded
VMのプロパティにバインドされています。また、UI仮想化は期待どおり
に機能します。アイテムへの手動スクロールが実行されたときにTreeViewItem.Expandedのイベントハンドラーが呼び出されました。
c# - VirtualizingStackPanel.IsVirtualizing="False" の場合、ItemContainerGenerator.ContainerFromItem() は null を返します。
この質問で同様の問題に直面していますが、問題は解決しませVirtualizingStackPanel.IsVirtualizing="False"
んでした。同じ問題に直面している人はいますか?
問題は、カスタムコンボボックスを持っていることです。
それでも、内部のチェックボックスへの参照を取得できません。
何か提案はありますか?
私が実際に達成したいのは、
実行時に変更できる他のオブジェクトに依存するチェックボックスの ischecked プロパティを変更したい。この時点で変更できないプロジェクト全体の現在の状態のため、バインディングを使用してそれを行うことはできません。基本的に、新しい MultiSelectionComboBox が作成されたら、次のようなことをしたいと思います。
xaml - アイテム コントロール内のアクセス制御
これは私のitemsControl
です:
上位3つのアイテム(つまり、上位3つのstackPanels)にアクセスして背景色を変更したいので、ItemContainerGenerator
以下を試しました:
しかし、uiElement
常にnull
値を持って
います またはから特定のアイテムを取得する他の方法はitemsControl
?
wpf - Contenttemplate が null である理由
私はMVVMの原則でWPFを使用しています。ビューは次のようになります。
私が言う奇妙なことは何もありません。myApp:TextBox にアクセスしてフォーカスを設定しようとしています。このために、コードビハインドでこの(未完成の)スニペットを使用します(MVVMの原則が何であるかを知っており、違反しているとは思いません)。
イベント ハンドラーに私のコメントが表示されますか? コンテンツ テンプレートが null ですか? なんで?何が間違っているのですか?
wpf - インデックスのない ItemContainerGenerator
Panel クラスから継承者を作成し、アイテムを実現する必要があります。私はこのコードを使用します:
このメソッドは、項目の生成に ItemSource インデクサーを使用します。しかし、オブジェクトからアイテムを生成する必要があります。つまり、オブジェクトのリストを取得し、アイテムを生成する必要があります。これどうやってするの?