我有一个Silverlight用户控件,这是"绑定"到Document对象。文档类包含Field对象的数组。目的是当控件绑定到文档时,文档中的每个字段都绑定到用户控件中的控件。每个字段都有一个名称,并且用户控件中要绑定到该字段的控件具有相同的名称(因此,如果该字段被调用" FirstName"用户控件中将有一个文本框with x:Name =" FirstName")。为了确定将哪个控件绑定到哪个字段,我使用了以下代码:
private void BindDocumentToUserControl(Document document)
{
foreach (Field field in document.Fields)
{
Control c = this.FindName(field.Name);
if (c != null)
{
//bind control to field...
}
}
}
这一切都正常,直到我尝试将控件放入制表符控件。当用户控件首次加载(并且用户自己没有更改选定的选项卡)时,上述方法会找到所有控件。但是,如果用户更改选定的选项卡,然后重新绑定控件,this.FindName将只找到所选选项卡中的控件。如果我在不同的选项卡中传递控件的名称,我知道它是正确的,它仍将返回null。
我发现下面有关同一问题的文章,但解决方案并不适合我正在尝试做的事情。任何帮助将不胜感激
答案 0 :(得分:1)
作为一个答案的黑客,你不能将每个标签的控件加载到一个隐藏的面板,一次一个标签,然后一旦加载控件,将它们移回标签?
我不能说这肯定有效,但听起来有点“合乎逻辑”,如果有点肮脏的黑客......