問題タブ [itemscontrol]

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 投票する
4 に答える
15580 参照

wpf - WPFリストボックスを「読み取り専用」にすることはできますか?

アイテムのリストを表示し、どちらが「現在の」アイテムであるかを示すシナリオがあります(小さな矢印マーカーまたは変更された背景色を使用)。

「SelectedItem」のコンテキストが必要なため、ItemsControlは適切ではありません。ただし、選択範囲をプログラムで移動し、ユーザーが変更できないようにする必要があります。

ListBoxを非インタラクティブにする簡単な方法はありますか?マウスとキーボードのイベントを意図的に飲み込むことでそれを曖昧にすることはできますが、私たちが望むものを与えるいくつかの基本的なプロパティ(「IsEnabled」をその視覚スタイルに影響を与えずにfalseに設定するなど)が欠けていますか?

または...両方の長所を備えた別のWPFコントロール(SelectedItemプロパティを持つItemsControl)はありますか?

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

silverlight - Silverlight ItemsControl 内の項目に対応する UI 要素を見つける

Silverlight ItemsControl によって表示される文字列のリストがあります。DataTemplate は、子として TextBlock を持つ Border コントロールです。アイテムに対応するボーダー コントロールにアクセスするにはどうすればよいですか? たとえば、背景色を変更するためにこれを行うことができます。

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

wpf - データバインドされた ItemsControl からテンプレート化された項目のインスタンスを取得するにはどうすればよいですか? (WPF)

<ItemsControl>カスタム<DataTemplate>(および<ItemsPanelTemplate>単なるカスタム)を持っており、単純な観察可能な文字列のコレクションにWrapPanelバインドされています。ItemsSource

は、プロパティが を介して文字列にバインドされているDataTemplateカスタムのインスタンスで構成されています。UserControl{Binding}

問題は、データ項目が単なる文字列であるため、UserControlプログラムで直接インスタンスにアクセスする必要があることですが、方法がわかりません!

私はもう試した:

...しかし、それは文字列を返すだけです。また:

... を返しますが、 my のインスタンスに到達するために をContentPresenterどうすればよいかわかりません。ContentPresenterUserControl

??

これはこの質問に似ていますが、適切に回答されたことはなく、Silverlight に固有のものでしたが、これは WPF です。

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

wpf - GetContainerForItemOverrideをカバーし、詳細に関連するWPFブックはどれですか?

どのWPFブックがItemsControl.GetContainerForItemOverrideをカバーし、詳細に関連していますか?さらに、TreeViewがそれをオーバーライドする理由と、IsItemItsOwnContainerOverrideがそれにどのように関連しているかについて読みたいと思います。

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

c# - ItemsControl の WPF データテンプレート

実行時に にバインドされる がありItemsControlます。正常に動作するタイプのデータ テンプレートを定義しました。ItemsSourceObservableCollection<Component>Component

Componentは があり、すべてのコントロールをレンダリングするために、内部にObservableCollection<Control>別のものを追加したいと考えています。これは、wpf コントロールに関連しない独自のカスタム オブジェクトです。ItemsControlComponent DatatemplateControl

ItemTemplateSelectorコントロールにはさまざまな種類があるため、各タイプに適したテンプレートを選択するために使用しようとしています。以下の例では、小さく保つために、オーバーライドで"RWString"a を使用しているテンプレートの 1 つだけを示しています。ただし、呼び出されることはありません(ブレークポイントを使用して確認します)。私のxamlに何か問題がありますか?FindResourceMyControlTemplateSelectorSelectTemplateSelectTemplate

更新: Contrlsはタイプミスではなく、愚かな命名システムを使用しているだけです。Contrlsタイプ の Component のプロパティですObservableCollection<Control>。また、私が使用しようとしている理由は 、ジェネリック型のオブジェクトが含まれているItemsTemplateSelectorなどのすべての派生元であり、明らかにジェネリック型を参照するデータテンプレートを作成できないためです。ObservableCollection<Control>Control<int> Control<string>Control

Update3: Update 2 は関連がなかったため削除しました。にItemTemplateSelector変更することで動作するStaticResourceようになりましたDynamicResource。しかし、なぜこれが機能するのかわかりません...

0 投票する
16 に答える
80540 参照

c# - WPF TreeViewで項目をプログラムで選択する方法は?

プログラムで WPF の項目を選択するにはどうすればよいTreeViewですか? モデルはそれItemsControlを防ぐようです。

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

silverlight - Silverlight アイテム コントロール。テンプレートを使用してパネルを完全に削除できますか?

他のメタデータを含む画像のみを含む ItemsControl の DataTamplate があります。私がやろうとしているのは、ItemsControl にバインドし、与えたデータを介してバインドされた Convas.Left と Canvas.Top で画像を表示することです。

親キャンバスで添付プロパティを使用できるように、ItemsPanelTemplate を介してコントロールからパネルを削除するために最善を尽くしてきましたが、デフォルトでは常に StackPanel を取得するようです。

誰か良いアイデアはありますか?

ありがとう、デイブ

0 投票する
4 に答える
15600 参照

wpf - ItemTemplate にある "CheckBox" アイテムを見つけるにはどうすればよいですか?

私は次の(非常に単純な)ItemsControlを持っています:

コードでは、次のことを行いたいと思います。

それ、どうやったら出来るの?

0 投票する
6 に答える
8691 参照

wpf - WPF に ItemsControl 内の項目を強制的に作成させる

私の項目がListBoxUI で正しく表示されることを確認したいと思います。これを行う 1 つの方法はListBox、ビジュアル ツリー内の のすべての子を調べてテキストを取得し、それを期待するテキストと比較することだと考えました。

このアプローチの問題点は、内部的ListBoxに a を使用しVirtualizingStackPanelてアイテムを表示するため、表示されているアイテムのみが作成されることです。私は最終的にクラスに出くわしましたItemContainerGenerator。これは、指定された項目のビジュアル ツリーにコントロールを作成するように WPF に強制するように見えます。残念ながら、それは私にいくつかの奇妙な副作用を引き起こしています. のすべてのアイテムを生成するコードは次のListBoxとおりです。

(必要に応じて のコードを提供できますがGetItemText()、 が見つかるまでビジュアル ツリーをトラバースするだけTextBlockです。アイテムにテキストを含める方法は他にもあると思いますが、アイテムを取得したら修正します。世代は正常に動作しています。)

私のアプリでItemsListBoxは、最初に表示される最初の 12 項目で、20 項目が含まれています。最初の 14 項目のテキストは正しいです (それらのコントロールが既に生成されている可能性があります)。ただし、項目 15 ~ 20 については、テキストがまったく表示されません。さらに、一番下までスクロールすると、ItemsListBox項目 15 ~ 20 のテキストも空白になります。したがって、何らかの方法でコントロールを生成するための WPF の通常のメカニズムに干渉しているようです。

私は何を間違っていますか?ItemsControlアイテムを強制的にビジュアル ツリーに追加する別の/より良い方法はありますか?

更新:修正方法はわかりませんが、これが発生する理由はわかったと思います。PrepareItemContainer()への呼び出しにより、アイテムを表示するために必要なコントロールが生成され、コンテナーがビジュアル ツリーの正しい場所に追加されると仮定しました。これらのことのいずれも行っていないことが判明しました。コンテナは、下にスクロールして表示するまで追加されません。ItemsControlその時点では、コンテナ自体(つまりListBoxItem)のみが作成されます-その子は作成されません(ここにいくつかのコントロールが追加され、そのうちの1つがアイテムのTextBlockテキストを表示します)。

結果に渡したコントロールのビジュアル ツリーをトラバースするとPrepareItemContainer()、結果は同じになります。どちらの場合も、 のみListBoxItemが作成され、その子は作成されません。

ListBoxItemをビジュアル ツリーに追加する良い方法が見つかりませんでした。ビジュアル ツリーでを見つけましたVirtualizingStackPanelが、そのChildren.Add()結果を で呼び出します ( の項目を生成するため、InvalidOperationException項目を に直接追加することはできません)。テストとして、リフレクションを使用して呼び出してみましたが(保護されているため)、それも機能しませんでした。ItemPanelItemsControlAddVisualChild()

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

silverlight - Silverlight 2: 可変数のアイテムが固定幅を占めるようにしたい

スタックパネルが連携していません。固定幅と、その中に左から右にレイアウトする可変数の項目があります。

スタック パネルでそれらをレイアウトする項目コントロールがあります。

しかし、これはアイテムのサイズを正しくしません。使用可能なスペースに関係なく、常に同じサイズです。項目が多すぎる場合は、すべてが収まるようにサイズ調整するのではなく、右側が切り取られます。これを達成する方法はありますか? アイテムの数が一定であればグリッドを使用しますが、そうではありません。通常は 1 ~ 4 個のアイテムです。

ItemsPanelTemplate が可変数の列を持つグリッドであると便利です。しかし、ItemsPanelTemplate でそれ (または同じ結果が得られるもの) が可能かどうかはわかりません。

含まれるアイテムに等しい幅を割り当てるパネルの特別なサブクラスを作成する答えはありますか?