WP7:SL/XNA:在Silverlight中显示XNA数据

WP7:SL/XNA:在Silverlight中显示XNA数据,silverlight,windows-phone-7,xna,Silverlight,Windows Phone 7,Xna,我正在制作Silverlight/XNA游戏。有这样的结构: 我的游戏性类继承自InGamePage 其中,InGamePage继承自PhoneApplicationPage InGamePage有一个OnlayOutUpdate方法来呈现SL控件(使用UIElementRenderer) 这是根据SL/XNA进行的 在我决定在gamepage.xaml中创建一个textblock之前,一切都很正常。我想让文本块显示一些静态游戏变量(比如英雄覆盖的距离) 现在我应该在哪里写这行: debug

我正在制作Silverlight/XNA游戏。有这样的结构:

  • 我的游戏性类继承自InGamePage
  • 其中,InGamePage继承自PhoneApplicationPage
  • InGamePage有一个OnlayOutUpdate方法来呈现SL控件(使用UIElementRenderer)
这是根据SL/XNA进行的

在我决定在gamepage.xaml中创建一个textblock之前,一切都很正常。我想让文本块显示一些静态游戏变量(比如英雄覆盖的距离)

现在我应该在哪里写这行:

debugTextBlock.Text = GameData.data.distanceCovered; 
因此,textblock显示当前值。 (我试图钩住一个LayoutUpdate,但它的抛出应用程序\u未处理异常,它说“检测到布局周期。布局无法完成”。)


非常感谢任何提示/链接。

我认为简单地使用Dispatcher可能会奏效:

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

抛出的异常是什么?@Rowland编辑了这个问题,异常是(“检测到布局周期。布局无法完成”)你看到了吗?这对@Rowland没有多大帮助,我猜它的SL+XNA阻止两个控件同时渲染。因为如果我尝试在任何事件上更新debugTextBlock.Text,它都可以正常工作。如果您解释了试图从何处设置文本,这会有所帮助——如果它来自您的重写
OnLayoutUpdated
我可以理解,您试图在渲染过程中更改某些内容(这可能会更改许多其他内容的位置)-您已经发现,如果您更改了更新文本的位置,它将起作用,因此这听起来像您的解决方案。对不起,如果我听起来是新手,那么应该在哪里执行此代码。我也尝试了这个线程(),但都是徒劳的。由于您提供了异常being抛出,我的答案与您的问题根本不匹配。debugTextBlock是固定大小还是根据内部内容相应地更改大小?