C# 如何在网格中找到特定控件?
我正在写一个纸牌游戏(比如说魔术),在这个游戏中,我一直有8张牌在桌子上。每张卡有4个文本框(姓名、技能A、技能B、描述)和2个图像(法力和照片)。我希望能够在任何时候以编程方式访问任何字段,例如,卡#5上的技能A 我无法使用控件名,因为我将访问Card5_SkillA,这非常低效 我尝试将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
网格中的控件分组
,并在运行时和编译时将标记
字段设置为“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对此并不关心。哼,数据绑定,我会搜索并尝试使用它=)删除引用是什么意思?