問題タブ [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.
wpf - WPFリストボックスを「読み取り専用」にすることはできますか?
アイテムのリストを表示し、どちらが「現在の」アイテムであるかを示すシナリオがあります(小さな矢印マーカーまたは変更された背景色を使用)。
「SelectedItem」のコンテキストが必要なため、ItemsControlは適切ではありません。ただし、選択範囲をプログラムで移動し、ユーザーが変更できないようにする必要があります。
ListBoxを非インタラクティブにする簡単な方法はありますか?マウスとキーボードのイベントを意図的に飲み込むことでそれを曖昧にすることはできますが、私たちが望むものを与えるいくつかの基本的なプロパティ(「IsEnabled」をその視覚スタイルに影響を与えずにfalseに設定するなど)が欠けていますか?
または...両方の長所を備えた別のWPFコントロール(SelectedItemプロパティを持つItemsControl)はありますか?
silverlight - Silverlight ItemsControl 内の項目に対応する UI 要素を見つける
Silverlight ItemsControl によって表示される文字列のリストがあります。DataTemplate は、子として TextBlock を持つ Border コントロールです。アイテムに対応するボーダー コントロールにアクセスするにはどうすればよいですか? たとえば、背景色を変更するためにこれを行うことができます。
wpf - データバインドされた ItemsControl からテンプレート化された項目のインスタンスを取得するにはどうすればよいですか? (WPF)
<ItemsControl>
カスタム<DataTemplate>
(および<ItemsPanelTemplate>
単なるカスタム)を持っており、単純な観察可能な文字列のコレクションにWrapPanel
バインドされています。ItemsSource
は、プロパティが を介して文字列にバインドされているDataTemplate
カスタムのインスタンスで構成されています。UserControl
{Binding}
問題は、データ項目が単なる文字列であるため、UserControl
プログラムで直接インスタンスにアクセスする必要があることですが、方法がわかりません!
私はもう試した:
...しかし、それは文字列を返すだけです。また:
... を返しますが、 my のインスタンスに到達するために をContentPresenter
どうすればよいかわかりません。ContentPresenter
UserControl
??
これはこの質問に似ていますが、適切に回答されたことはなく、Silverlight に固有のものでしたが、これは WPF です。
wpf - GetContainerForItemOverrideをカバーし、詳細に関連するWPFブックはどれですか?
どのWPFブックがItemsControl.GetContainerForItemOverrideをカバーし、詳細に関連していますか?さらに、TreeViewがそれをオーバーライドする理由と、IsItemItsOwnContainerOverrideがそれにどのように関連しているかについて読みたいと思います。
c# - ItemsControl の WPF データテンプレート
実行時に にバインドされる がありItemsControl
ます。正常に動作するタイプのデータ テンプレートを定義しました。ItemsSource
ObservableCollection<Component>
Component
今Component
は があり、すべてのコントロールをレンダリングするために、内部にObservableCollection<Control>
別のものを追加したいと考えています。これは、wpf コントロールに関連しない独自のカスタム オブジェクトです。ItemsControl
Component
Datatemplate
Control
ItemTemplateSelector
コントロールにはさまざまな種類があるため、各タイプに適したテンプレートを選択するために使用しようとしています。以下の例では、小さく保つために、オーバーライドで"RWString"
a を使用しているテンプレートの 1 つだけを示しています。ただし、呼び出されることはありません(ブレークポイントを使用して確認します)。私のxamlに何か問題がありますか?FindResource
MyControlTemplateSelector
SelectTemplate
SelectTemplate
更新: Contrls
はタイプミスではなく、愚かな命名システムを使用しているだけです。Contrls
タイプ の Component のプロパティですObservableCollection<Control>
。また、私が使用しようとしている理由は 、ジェネリック型のオブジェクトが含まれているItemsTemplateSelector
などのすべての派生元であり、明らかにジェネリック型を参照するデータテンプレートを作成できないためです。ObservableCollection<Control>
Control<int>
Control<string>
Control
Update3: Update 2 は関連がなかったため削除しました。にItemTemplateSelector
変更することで動作するStaticResource
ようになりましたDynamicResource
。しかし、なぜこれが機能するのかわかりません...
c# - WPF TreeViewで項目をプログラムで選択する方法は?
プログラムで WPF の項目を選択するにはどうすればよいTreeView
ですか? モデルはそれItemsControl
を防ぐようです。
silverlight - Silverlight アイテム コントロール。テンプレートを使用してパネルを完全に削除できますか?
他のメタデータを含む画像のみを含む ItemsControl の DataTamplate があります。私がやろうとしているのは、ItemsControl にバインドし、与えたデータを介してバインドされた Convas.Left と Canvas.Top で画像を表示することです。
親キャンバスで添付プロパティを使用できるように、ItemsPanelTemplate を介してコントロールからパネルを削除するために最善を尽くしてきましたが、デフォルトでは常に StackPanel を取得するようです。
誰か良いアイデアはありますか?
ありがとう、デイブ
wpf - ItemTemplate にある "CheckBox" アイテムを見つけるにはどうすればよいですか?
私は次の(非常に単純な)ItemsControlを持っています:
コードでは、次のことを行いたいと思います。
それ、どうやったら出来るの?
wpf - WPF に ItemsControl 内の項目を強制的に作成させる
私の項目がListBox
UI で正しく表示されることを確認したいと思います。これを行う 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
項目を に直接追加することはできません)。テストとして、リフレクションを使用して呼び出してみましたが(保護されているため)、それも機能しませんでした。ItemPanel
ItemsControl
AddVisualChild()