2012-07-03 3 views
-1

Я работаю над игрой Silverlight/XNA. Имея структуру, как это:WP7: SL/XNA: отображать данные XNA в Silverlight

  • Мой GamePlay класс наследуется от InGamePage.
  • Где InGamePage унаследовано от PhoneApplicationPage.
  • InGamePage имеет метод OnLayoutUpdated для визуализации элементов управления SL (с использованием UIElementRenderer).

Это согласно SL/XNA code sample

Все работает отлично, пока я решил создать TextBlock в gamepage.xaml. Я хочу, чтобы textBlock показывал некоторые статические переменные игры (например, расстояние, покрываемое героем).

Теперь, когда я должен написать эту строку:

debugTextBlock.Text = GameData.data.distanceCovered; 

так, что TextBlock показывает текущие значения. (Я попытался зацепить LayoutUpdate, но его бросание Application_UnhandledException, в котором говорилось о том, что «обнаружен цикл компоновки. Макет не может быть завершен».)

Любые подсказки/ссылки высоко оценены.

+0

Что это исключение, которое бросают? –

+0

@Rowland отредактировал вопрос, ну исключение («обнаружен цикл макета. Макет не может завершиться».) – Priyank

+0

Вы видели [этот более ранний вопрос] (http://stackoverflow.com/q/636245/50447)? –

ответ

0

Я думаю, что просто с помощью диспетчера может работать:

Dispatcher.BeginInvoke(()=> 
{ 
debugTextBlock.Text = GameData.data.distanceCovered; 
}); 
+0

извините, если я озвучиваю новичку, но где должен выполнять этот код. Я также проверял эту тему (http://stackoverflow.com/questions/9320181/multiple-asynchronous-ui-updates-in-silverlight), но все напрасно. – Priyank

+0

Так как вы предоставили исключение, то бросали мой ответ, который не соответствует вашей проблеме вообще. Является ли debugTextBlock фиксированным размером или изменяет размер в соответствии с содержимым внутри? – Skiba

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