Добавление динамических элементов управления в приложение Silverlight после асинхронного обратного вызова службы WCF - PullRequest
0 голосов
/ 12 января 2011

Я пытаюсь добавить некоторые динамические элементы управления на мою страницу Silverlight после вызова WCF. Когда я пытаюсь добавить элемент управления, я получаю сообщение об ошибке: ссылка на объект не установлена ​​на экземпляр объекта.

Вот упрощенная версия моего кода:

using edm = SilverlightBusinessApplication.ServiceRefrence;

public partial class ListWCF : Page
    {
        edm.ServiceClient EdmClient = new ServiceClient();
        public ListWCF()
        {
            EdmClient.GetTestCompleted += EdmGetTestCompleted;
            EdmClient.GetTestAsync();
        }

        private void EdmGetTestCompleted(object sender, edm.GetTestCompletedEventArgs e)
        {
            //This is where I want to add my controls
            Button b = new Button();
            LayoutRoot.Children.Add(b); //Error: Object reference not set to an instance of an object
        }

    }

Разве невозможно изменить страницу после ее загрузки? Чего мне не хватает?

Спасибо

1 Ответ

2 голосов
/ 12 января 2011

Да, возможно изменить страницу после ее загрузки.

Первое, что вы должны сделать, когда вы встретите такого рода исключения, это определить, какие из ваших переменных являются нулевыми.Вы должны быть в состоянии сделать это через отладчик.Вставьте точку останова в эту строку кода (или скажите VS, чтобы она разрывалась при возникновении исключений) и проверьте переменные.Я предполагаю, что LayoutRoot имеет значение null.

Я не вижу вызова InitializeComponent () в конструкторе вашего класса.В пользовательском элементе управления Silverlight этот вызов вызовет сгенерированный класс, который создает ваш XAML, а также найдет именованные элементы (x: Name), что позволит вам получить к ним доступ из своего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...