我有一个 Silverlight UserControl,它使用 ContentPropertyAttribute 来公开其中一个子面板的 Children 属性。这允许我将子控件添加到页面上的面板:
<local:MyUserControl>
<TextBox Name="tbTest" />
</local:MyUserControl>
除了存在但未初始化的页面的“tbTest”字段之外,这有效。仔细检查后,InitializeComponent 方法确实尝试定位 TextBox(使用 FindName),但没有这样做(返回 null)。
经过一番调查,我发现名称范围是问题所在 - UserControl 有它自己的名称范围,因此无法使用页面的 FindName 找到它的子级,但可以使用 UserControl 的 FindName 方法。
如何更改我的 UserControl 以便可以通过 InitializeComponent 方法定位子控件?标准的面板(StackPanel、Grid等)这样做似乎没有任何问题,那么一定有解决方案吗?
谢谢