如何在网格中找到特定控件?

时间:2014-05-27 19:41:15

标签: c# wpf grid wpf-controls

我正在写一个纸牌游戏(以魔术为例),我一直在桌面上有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似乎有点过分,我不能按行/列进行搜索,因为我希望将来可以重新设计卡片,而无需修改代码。

有什么建议吗?谢谢=)

1 个答案:

答案 0 :(得分:0)

您不想通过控件搜索数据。控件用于显示和使用数据,而不是构造它。而不是那样,看一下MVVM模式:MVVM: Tutorial from start to finish?

创建一个将成为您游戏的ViewModel。让您的UI绑定到该ViewModel并让其控件绑定到Game的属性。这样,您就可以将游戏逻辑与UI逻辑分离并完全构建。