我有一个Silverlight Usercontrol,它使用ContentPropertyAttribute揭露了其中一个儿童面板的儿童财产。这使我可以在页面上的面板上添加子控制器:

<local:MyUserControl>
    <TextBox Name="tbTest" />
</local:MyUserControl>

除了存在的页面的“ tbtest”字段之外,这起作用了,但没有初始化。经过仔细检查,InitializeComponent方法确实尝试找到文本框(带有FindName),但未能这样做(返回null)。

经过一番调查,我发现名称角度是问题 - usercontrol具有自己的名字,因此它的孩子不能与该页面的FindName一起放置,但可以使用UserControl的FindName方法。

如何更改我的USERCONTROL,以使儿童控制可以通过InitializeComponent方法定位?标准面板(Stackpanel,网格等)似乎没有任何问题,因此必须有解决方案?

谢谢

有帮助吗?

解决方案

在这一点上可能很难做到,但是最好的行动可能是从ItemScontrol而不是UserControl得出您的控件。然后,您不会在名称范围内遇到问题。

我想作为解决方法,您可以使用VisualTreeHelper深入研究控制,以手动设置TBTEST字段。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top