WPF:绑定项添加到UserControl的公开子项

时间:2010-05-07 21:00:00

标签: wpf binding user-controls children

我有一个用户控件,允许通过公开Grid的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; }
    }

有什么想法?这是范围问题吗?我知道由于范围错误,我无法命名我添加到子节点的元素。谢谢,Brian。

2 个答案:

答案 0 :(得分:0)

这可能会回答您的问题: How do you bind a grid's children to a list?

或正如WPF博士所说:(http://drwpf.com/blog/2007/10/15/itemscontrol-a-is-for-abundance/

  

Panel是ItemsControl吗?

     

没有。小组的逻辑孩子   是UIElements,而逻辑   ItemsControl的子项(其中   Items)可以是任何CLR对象。

     

补充工具栏:那么什么是面板?主要的   面板的作用是提供布局   支持其子女。虽然一个   小组确实维护了一个集合   儿童元素,它不是技术上的   一个WPF“控制”......也就是说,它没有   派生自Control基类和   它不支持WPF的概念   模板。相反,它是单一的   具有单一目的的元素...即,   尺寸和位置(a.k.a.,measure   并安排)其子女。

答案 1 :(得分:0)

我显然认为这件事都错了。我需要做的是创建一个无外观控件并将其模板化为一个(或多个)内容提供者。