Элемент управления Silverlight Tab, FindName не всегда работает должным образом

У меня есть пользовательский элемент управления 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.

я нашел статью ниже относительно той же самой проблемы, однако решение действительно не подходит для того, что я пытаюсь сделать. любая помощь будет принята с благодарностью

http://forums.silverlight.net/forums/p/59912/248977.aspx

1 ответ

Решение

Как небольшой взлом ответа, не могли бы вы загрузить элементы управления для каждой вкладки в скрытую панель, по одной вкладке за раз, а затем, когда элементы управления были загружены, переместить их обратно во вкладку?

Я не могу сказать, что это определенно работает, но это звучит "логично", если немного грязного хака....

Другие вопросы по тегам