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

C# 如何在网格中找到特定控件?,c#,wpf,grid,wpf-controls,C#,Wpf,Grid,Wpf Controls,我正在写一个纸牌游戏(比如说魔术),在这个游戏中,我一直有8张牌在桌子上。每张卡有4个文本框(姓名、技能A、技能B、描述)和2个图像(法力和照片)。我希望能够在任何时候以编程方式访问任何字段,例如,卡#5上的技能A 我无法使用控件名,因为我将访问Card5_SkillA,这非常低效 我尝试将网格中的控件分组,并在运行时和编译时将标记字段设置为“Skill_a”,并尝试如下查找: foreach (UIElement c in mygrid.Children) { if

我正在写一个纸牌游戏(比如说魔术),在这个游戏中,我一直有8张牌在桌子上。每张卡有4个文本框(姓名、技能A、技能B、描述)和2个图像(法力和照片)。我希望能够在任何时候以编程方式访问任何字段,例如,卡#5上的技能A

我无法使用控件名,因为我将访问Card5_SkillA,这非常低效

我尝试将
网格中的控件分组
,并在运行时和编译时将
标记
字段设置为“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");
    }
但在执行该循环时,
标记
字段始终为空

我搜索了其他问题,但
TreeHelper
似乎有些过火,我无法按行/列搜索,因为我希望将来能够在不修改代码的情况下重新设计卡片设计


有什么建议吗?谢谢=)

您不想通过控件搜索数据。控件用于显示和使用数据,而不是构造数据。相反,请看一下MVVM模式:


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

看看MVVM设计模式,它使live变得更容易—您在WPF中不会“在网格中找到特定控件”。您可以使用适当的数据绑定,创建适当的ViewModel,并使用适当的ItemsControl。顺便说一句,删除对
System.Windows.Forms.dll的引用,WPF对此并不关心。哼,数据绑定,我会搜索并尝试使用它=)删除引用是什么意思?