Silverlight Tab 控件、FindName 并不总是正常工作
-
15-11-2019 - |
题
我有一个 silverlight 用户控件,它“绑定”到 Document 对象。文档类包含 Field 对象的数组。目的是当控件绑定到文档时,文档中的每个字段都绑定到用户控件中的控件。每个字段都有一个名称,并且用户控件中要绑定到该字段的控件被赋予相同的名称(因此,如果该字段名为“FirstName”,则用户控件中将出现一个文本框,其中 x:Name= “名”)。为了确定哪个控件将绑定到哪个字段,我使用了以下代码:
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。
我发现下面的文章涉及同一问题,但是该解决方案并不适合我想要做的事情。任何帮助将不胜感激
解决方案
作为一个答案的一点破解,您不能将每个选项卡的控件加载到隐藏面板,一次一个选项卡,然后加载控件后,将它们移回选项卡吗?
我不能说这绝对有效,但它听起来“合乎逻辑”,如果有点肮脏的黑客......
不隶属于 StackOverflow