获取WP7中的动态(运行时)按钮以与对象关联

本文关键字:按钮 对象 关联 运行时 WP7 动态 获取 | 更新日期: 2023-09-27 18:29:38

我正在为XNA游戏创建一个界面,但似乎无法解决问题。我是编程新手,觉得我一定错过了一些显而易见的东西。

我正在创建一个关卡网格,就像你在《愤怒的小鸟》中看到的一样
级别的数量是可变的,所以我不想对它们进行静态编程。

我用于级别图标的所有按钮都是在运行时根据级别对象列表动态创建的。当我创建按钮时,我将所有的点击事件设置为指向一个方法,该方法应该确定他们点击了哪个按钮,并加载该特定级别。

我的问题是,我似乎无法找到一种可靠的方法来判断他们点击了哪个按钮,并将其与列表中我的一个级别对象相关联我觉得我一定错过了一些非常明显的东西。

到目前为止我尝试过的东西:

当我动态生成按钮时,我将它们作为子项添加到网格中。因此,我尝试使用发件人的索引号作为级别列表中的索引号(因为它们都应该具有相同数量的元素)。例如:App.CurrentLevel=PuzzleLevelsGrid.Children.IndexOf(发送方为按钮);

这在我第一次导航到级别选择屏幕时效果很好,但每当我回到它时,由于某种原因,我的网格的子级都会重置为0,所以它会崩溃。我已经设置了断点,但我无法解释它是如何设置为0的。我把孩子们加载到我的onNavigatedTo()中,在它结束和我按下按钮加载一个级别之间的某个时候,它会被擦除。

我尝试的另一件事是在我的实际级别对象中设置一个按钮对象,然后在动态创建级别按钮时,我实际上会在适当的级别中更改按钮属性
然后,当我需要找出哪个按钮是发送者时,我只需遍历所有级别,并将发送者与按钮属性相匹配。这种方法实际上效果很好。。。直到我开始尝试使用后台工作线程加载我的级别。工作线程无法处理Button,因为它是一个UI线程,并且会崩溃。

就像我说的,我是一个新程序员,所以我欢迎任何反馈。提前谢谢。

获取WP7中的动态(运行时)按钮以与对象关联

按钮和几乎所有UI控件一样,都有一个"Tag"属性。此属性是为您设计的,而且仅为您设计,因此您可以输入任何您喜欢的值来标识控件。

例如,您可以将级别对象放在按钮的Tag属性中,然后在单击事件中读取回该值。