USERCORTROL儿童控制和FindName
-
14-10-2019 - |
题
我有一个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字段。
不隶属于 StackOverflow