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

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

1 голос
/ 18 мая 2011

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

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

...