0

我当然想在每个文本框中不显示 json 对象,但由于它们是不可预测的对象数量,因此我使用此代码动态创建了文本框

List<Course> Cdata = JsonConvert.DeserializeObject<List<Course>>(App.data);
            TextBox[] Tblock = new TextBox[Cdata.Count];
            double top = 0; int i = 0;

            foreach (Course de in Cdata)
            {
                result += de.course_name + "\r\n";
                result += "Total Absents = " + de.absents;
                result += " + " + de.presents;
                result += " = " + de.sessions + "\r\n\r\n\r\n";


                Tblock[i] = new TextBox();
                Tblock[i].Text = result;
                Tblock[i].AcceptsReturn = true;
                Tblock[i].TextWrapping = TextWrapping.Wrap;
                Tblock[i].Width = 475;
                Tblock[i].Height = 270;
                Tblock[i].IsReadOnly = true;
                Tblock[i].Margin =new Thickness (0,top,0,0);
                Tblock[i].Visibility = System.Windows.Visibility.Visible;
                Tblock[i].VerticalAlignment = System.Windows.VerticalAlignment.Top;
                top += 270; i++;

                result = "";

            }

现在,当我调试我的应用程序数据时,它可以正常工作,唯一的问题是文本框

从不显示在视图上

我还没有在视图的 Xaml 文件中编写任何文本框 提前致谢

4

1 回答 1

2

您必须将文本框添加到 XAML 中的任何现有面板(通常是 Grid 或 StackPanel),如下所示

StackPanel sp = new StackPanel(); //Create stack panel before foreach loop
foreach (Course de in Cdata)
{
   //your code which you shown above
   sp.Children.Add(Tblock[i]); //Add all the Textboxes to the stackpanel
}

ContentPanel.Children.Add(sp); //And add the above stackpanel to the existing Grid named ContentPanel

顺便说一句,我建议您使用带有 ItemTemplate 的 ListBox 来绑定数据,而不是如上所示创建 TextBoxes。

另外,我不明白您为什么选择 TextBox 而不是 TextBlock 来显示数据

于 2012-12-19T06:05:27.593 回答