C# 在Windows Phone 7中创建运行时文本框

C# 在Windows Phone 7中创建运行时文本框,c#,xaml,windows-phone-7,C#,Xaml,Windows Phone 7,我当然不想在每个文本框中显示json对象 但由于它们是数量不可预测的对象,因此我使用此代码动态创建了textbox List<Course> Cdata = JsonConvert.DeserializeObject<List<Course>>(App.data); TextBox[] Tblock = new TextBox[Cdata.Count]; double top = 0; int i = 0;

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

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 = "";

            }
List Cdata=JsonConvert.DeserializeObject(App.data);
TextBox[]Tblock=newtextbox[Cdata.Count];
双层顶=0;int i=0;
foreach(Cdata中的课程de)
{
结果+=de.course\u name+“\r\n”;
结果+=“总缺席人数=”+de.缺席人数;
结果+=“+”+de.presents;
结果+=“=”+de.sessions+“\r\n\r\n\r\n”;
Tblock[i]=新文本框();
Tblock[i].Text=结果;
Tblock[i].AcceptsReturn=true;
Tblock[i].TextWrapping=TextWrapping.Wrap;
Tblock[i].宽度=475;
Tblock[i].高度=270;
Tblock[i].IsReadOnly=true;
Tblock[i]。边距=新厚度(0,顶部,0,0);
Tblock[i].Visibility=System.Windows.Visibility.Visibility;
Tblock[i].VerticalAlignment=System.Windows.VerticalAlignment.Top;
top+=270;i++;
结果=”;
}
现在,当我调试我的应用程序数据时,它正在工作,因为它应该是唯一的问题是文本框

从不在视图中显示

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

您必须将文本框添加到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的列表框来绑定数据,而不是像上面所示创建文本框


而且,我不明白你为什么选择TextBox而不是TextBlock来显示数据

在WP上不确定,但你不需要像普通窗口一样将控件添加到控件集合或容器中吗?这正是我在windows窗体上无法理解的,我们将其添加到窗体中,但在WP中没有窗体,只是XamlI中的网格布局我相信您可能希望将文本框添加到StackPanel或类似的容器中。