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

本文关键字:控件 网格 | 更新日期: 2023-09-27 18:05:21

我正在编写一款纸牌游戏(以《万智牌》为例),在这款游戏中我有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似乎过度,我不能按行/列搜索,因为我希望能够在未来重新设计卡片设计而不修改代码。

任何建议吗?谢谢=)

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

您不希望通过控件搜索数据。控件的作用是显示和使用数据,而不是构造数据。相反,看看MVVM模式:MVVM:教程从头到尾?

创建一个ViewModel,它将是你的游戏。让你的UI绑定到那个ViewModel,并让它的控件绑定到游戏的属性。这样你就可以将游戏逻辑与UI逻辑分离并完全结构化。