他のコントロールを含むことができ、依存プロパティを使用して構成可能なカスタムパネル(MyCustomControl)を作成しました。別のユーザーコントロール(MyUserControl)内では、XAMLでMyCustomControlのインスタンスが複数設定されています。ListControlのItemsSourceとして<UIElement>を使用すると、DataTemplateは適用されません。
ユーザーコントロールの外で、実行時にMyUserControlに存在するMyCustomControlsのリストにItemsControl(myItemsControl)をバインドしようとしています。したがって、私はMyUserControlから依存関係プロパティを通じてListを公開しています。
この戦略から予期しない動作が発生しています。私はItemsControlがListを受け取り、ItemsControlのDataTemplateを満たすことができるデータ値を持つオブジェクトとして内部の各コントロールインスタンスを使用したいと思います。しかし、それはやっていません。代わりに、基本的にDataTemplateを完全に無視し、リスト/ ItemsSourceにあるすべてのコントロールを再描画します。
要約すると、ItemsControlのItemsSourceとしてコントロールのリストを使用すると、コントロールをデータオブジェクトとして使用せず、代わりにコントロールインスタンスとしてレンダリングします。
驚いたことに、私は同じことをやろうとしますが、ItemsControlの代わりにListBoxを使用すると、データバインディングは期待通りに機能します。私は他の理由でListBoxを使用したくありません。誰もがこの動作に影響を与えるListBoxとItemsControlの間の違いを知っていますか?
編集:私はここにいない上場解像度と同じ問題を持ったという別のユーザー見つけました:ItemsControlにコードを調べるためにリフレクターを使用した後msdn social forum post
この質問に対する回答を見る(http://stackoverflow.com/questions/661831/wpf-itemtemplate-not-acting-as-expected) – Arcturus