如何在网格中找到特定控件
本文关键字:控件 网格 | 更新日期: 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逻辑分离并完全结构化。