我正在写一个纸牌游戏(以魔术为例),我一直在桌面上有8张牌。每张卡片有4个文本框(名称,技能A,技能B,描述)和2个图像(法术力和照片)。我希望能够在任何时候以编程方式访问任何字段,例如,卡#5上的技能A.
我无法使用控件名称,因为我将访问Card5_SkillA,效率非常低。
我尝试将控件分组到Grid
中,并在运行时和编译时将Tag
字段设置为“Skill_A”并尝试找到它:
foreach (UIElement c in mygrid.Children)
{
if ( c is TextBox && ((TextBox) c).Tag.ToString() == "Skill_A")
System.Windows.Forms.MessageBox.Show("you found me");
}
但是在执行该循环时,Tag
字段始终为空。
我搜索了其他问题,但是TreeHelper
似乎有点过分,我不能按行/列进行搜索,因为我希望将来可以重新设计卡片,而无需修改代码。
有什么建议吗?谢谢=)
答案 0 :(得分:0)
您不想通过控件搜索数据。控件用于显示和使用数据,而不是构造它。而不是那样,看一下MVVM模式:MVVM: Tutorial from start to finish?
创建一个将成为您游戏的ViewModel。让您的UI绑定到该ViewModel并让其控件绑定到Game的属性。这样,您就可以将游戏逻辑与UI逻辑分离并完全构建。