我有几个动态创建的文本框,如果我想在面板中找到文本框什么是最好的方式来找到它?WPF C#从面板内部面板查找控件
我在网上搜索和一些通过FindName说我们可能能够找到我们的控制,但为此我需要给我的每个文本框的名称和WPF中,名称必须带有字母不是int即使我把int .ToString它会搞砸了。但是如果我把信件放在信件上,我很难通过信件找到它们,因为我可以从00开始,一路都是+1,但我不能那样做。
我有一个动态创建WrapPanel内动态创建文本框和我添加创建WrapPanel动态创建的StackPanel里面,然后我说stackkpanel添加到我的XAML侧
已经创建了一个WrapPanel如果你问我的动态为什么我需要这么多的面板,因为这是唯一的方法,我可以让我看起来更好,因为我从db中获取信息并显示它的方式。
这里是我的代码看起来像(我把它剪短,因为它太长):
private void PopulateQuestion(int activityID, int taskID)
{
IList<Model.questionhint> lstQuestionHints = qh.GetRecords(taskID, activityID);
StackPanel sp = new StackPanel();
foreach (Model.questionhint qhm in lstQuestionHints)
{
WrapPanel wp = new WrapPanel();
//some code ....
if (qhm.Option1.Trim().Length > 0 &&
qhm.Option2.Trim().Length > 0)
{
wp.Children.Add(space);
wp.Children.Add(tbox); //
}
sp.Children.Add(wp);// Adding wrap panel to stackpanel
} // end of for each loop.
WrapPanelTest.Children.Add(sp); // Adding stackpanel to WrapPanel (in xaml)
}
WrapPanelTest是我在XAML端创建面板。所以,现在如果我有一个按钮,我应该如何找到这些面板的文本框控件?
我想:
private void button1_Click(object sender, RoutedEventArgs e) // Check Button
{
int c = 0;
foreach (TextBox txtbox in WrapPanelTest.Children)
{
c++;
}
MessageBox.Show(c);
}
但它显示了这个错误(这点在foreach循环文本框txtbox):
抱歉,但该死的家伙那是地狱混乱。我不明白在WrapPanel中的'StackPanel'中需要一个动态的'WrapPanel'。那么用'DataTemplate'和'Binding'的简单'ItemsControl'怎么样? – Viv