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 の既存のパネル (通常はグリッドまたはスタックパネル) にテキストボックスを追加する必要があります。

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

ところで、上記のように TextBox を作成する代わりに、ListBox と ItemTemplate を使用してデータをバインドすることをお勧めします。

また、データを表示するために TextBlock ではなく TextBox を選択した理由がわかりません

于 2012-12-19T06:05:27.593 に答える