2

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

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

4

2 回答 2

0

我显然在做这件事全错了。我需要做的是创建一个无外观控件并将其模板化为具有一个(或多个)内容演示者。

于 2010-06-11T20:18:24.637 回答
0

这可能会回答您的问题: 如何将网格的子项绑定到列表?

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

面板是 ItemsControl 吗?

否。面板的逻辑子项是 UIElement,而 ItemsControl(其项)的逻辑子项可以是任何 CLR 对象。

边栏:那么什么是面板?面板的主要作用是为其子项提供布局支持。尽管面板确实维护了一组子元素,但从技术上讲,它不是 WPF“控件”……也就是说,它不是从 Control 基类派生的,也不支持 WPF 模板的概念。相反,它是一个具有单一目的的单一元素……即调整其子元素的大小和位置(也称为测量和排列)。

于 2010-05-11T09:15:37.350 回答