2012-04-01 3 views
1

Я пытаюсь использовать coding4fun toolkit для Windows Phone 7.Ссылка не является корректным визуальным DependencyObject

InputPrompt input = new InputPrompt(); 
whoAreYou.Completed += input_Completed; 
input.Title = "Who are you?"; 
input.Message = "Enter your name"; 
input.Show(); 

void input_Completed(object sender, PopUpEventArgs<object, PopUpResult> e) 
    { 
     //add some code here 
     InputPrompt input = sender as InputPrompt; 
     MessageBox.Show(input.Value); 
    } 

Это бросает под исключение:

Reference is not a valid visual DependencyObject 

Я хочу спросить у пользователя его/ее имя. Я следую за этим tutorial и добавил необходимые ссылки на сборку. Как я могу заставить инструментарий coding4fun работать?

Edit: Если бы я сделать это в XAML как <c4f:InputPrompt x:Name="input" Completed="input_Completed_1" />

Тогда это работает, но мне нужно, чтобы работать с кодом.

+0

Вы имеете в виду, что отправитель имеет значение null в input_Completed? Потому что это будет ошибка в исходном коде. Я видел это чаще, когда люди называют там делегатов и отправляют null как отправитель вместо 'this' – Silvermind

+1

Нет, он не попал в input_Completed. Возникла проблема в вызове 'input.Show()' – nikhil

+0

@nikil Рад, что у вас есть рабочее решение. С наилучшими пожеланиями. – Silvermind

ответ

3

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

Когда я изменил код, чтобы показать InputPrompt on Loaded, все сработало нормально. В принципе, вам нужно подождать, пока страница не будет загружена, или поместите элемент управления в ваш файл XAML.

+0

Как это сделать? – nikhil

+0

В вашем конструкторе введите следующий код: this.Loaded + = new RoutedEventHandler (MainPage_Loaded); , а затем используйте метод MainPage_Loaded для отображения InputPrompt. –

+0

Спасибо, ваш ответ был наиболее полезным. – nikhil

Смежные вопросы