我有幾個動態創建的文本框,如果我想在面板中找到文本框什麼是最好的方式來找到它?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