2

グリッドのChildrenプロパティを公開することでアイテムを追加できるユーザーコントロールがあります。追加したコントロールはすべて正常に表示されますが、追加したアイテムのプロパティをメインウィンドウのコントロールにバインドしようとしても、何も起こりません(例)。

<TextBox Name="txtTest" Text="Success!" />

<mycontrols:CustomUserControl.ExposedGridChildren>
     <TextBox Text="{Binding ElementName=txtTest, Path=Text, FallbackValue=fail}"/>
</mycontrols:CustomUserControl.ExposedGridChildren>

この例では、常にTextBoxのテキストに「失敗」と表示されます。これが、ユーザーコントロールで子を公開する方法です。

public UIElementCollection ExposedGridChildren
    {
        get { return grdContainer.Children; }
    }

何かご意見は?スコープの問題ですか?スコープエラーのため、子に追加する要素に名前を付けることができないことはわかっています。ありがとう、ブライアン。

4

2 に答える 2

0

これはあなたの質問に答えるかもしれません: グリッドの子をリストにどのようにバインドしますか?

または、WPF博士が述べているように:(http://drwpf.com/blog/2007/10/15/itemscontrol-a-is-for-abundance/

パネルはItemsControlですか?

いいえ。パネルの論理的な子はUIElementsですが、ItemsControl(そのItems)の論理的な子は任意のCLRオブジェクトにすることができます。

サイドバー:では、パネルとは何ですか?パネルの主な役割は、その子にレイアウトサポートを提供することです。パネルは子要素のコレクションを維持しますが、技術的にはWPFの「コントロール」ではありません…つまり、コントロールの基本クラスから派生したものではなく、テンプレートのWPFの概念をサポートしていません。代わりに、それは単一の目的を持つ単一の要素です…つまり、その子のサイズと位置(別名、測定と配置)を行います。

于 2010-05-11T09:15:37.350 に答える
0

私はどうやらこのことについてすべて間違っていたようです。私がする必要があったのは、見た目のないコントロールを作成し、1つ(または複数)のコンテンツプレゼンターを持つようにテンプレート化することでした。

于 2010-06-11T20:18:24.637 に答える