0

以下のコードでは、しようとしています...

  1. TextBlock(txtDays) を Grid(mygrid) 内に配置します (行として)
  2. Grid を ListBox(lsBox) 内に配置します
  3. 最後に、ListBox を別の Grid(ContentPanel) に配置する

プログラムは適切なエラーなしでクラッシュするだけで、このコードを実行するとエミュレーターが停止します。Grid (2.) を stackPanel 内に配置するか、ListBox に配置せずに他の Grid (3.) に直接配置すると、コードは機能しますが、ListBox では機能しません。

コメント、支援をいただければ幸いです。

ありがとうございました。

    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        string[] lstDays = new string[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };

        //Creating a ListBox
        ListBox lstBox = new ListBox();
        //Grid definition
        Grid mygrid = new Grid();
        ColumnDefinition c1 = new ColumnDefinition(); //creating a column
        mygrid.ColumnDefinitions.Add(c1);

        int i = -1;
        foreach (string item in lstDays)
        {
            i += 1;
            TextBlock txtDays = new TextBlock(); //Creating a TextBlock

            RowDefinition r1 = new RowDefinition(); //Creating a row
            mygrid.RowDefinitions.Add(r1);

            txtDays.Text = item;
            txtDays.TextAlignment = TextAlignment.Left;
            if (item == "Thursday")
            {
                txtDays.TextAlignment = TextAlignment.Right;
                txtDays.Foreground = new SolidColorBrush(Colors.Green);
            }

            mygrid.Children.Add(txtDays); //Adding the TextBlock into the grid
            Grid.SetRow(txtDays,i);       //Placing the item in a particular row inside the grid          
            lstBox.Items.Add(mygrid);     //Placing grid inside a listBox (ERROR here)

        }

        RowDefinition rNewRow = new RowDefinition();
        ContentPanel.RowDefinitions.Add(rNewRow);
        ContentPanel.Children.Add(lstBox);
    }
4

2 に答える 2

2

エラーを修正した後のコード。初心者向けのコードです。

public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }

    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        string[] lstDays = new string[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };

        //Creating a ListBox
        ListBox lstBox = new ListBox();

        foreach (string item in lstDays)
        {
            //Grid definition
            Grid mygrid = new Grid();
            mygrid.Width = 400;
            ColumnDefinition c1 = new ColumnDefinition(); //creating a column
            c1.Width = new GridLength(200);
            mygrid.ColumnDefinitions.Add(c1);

            RowDefinition r1 = new RowDefinition(); //Creating a row
            mygrid.RowDefinitions.Add(r1);

            TextBlock txtDays = new TextBlock(); //Creating a TextBlock
            txtDays.Text = item;
            txtDays.TextAlignment = TextAlignment.Left;
            if (item == "Thursday")
            {
                txtDays.TextAlignment = TextAlignment.Right;
                txtDays.Foreground = new SolidColorBrush(Colors.Green);
            }

            mygrid.Children.Add(txtDays); //Adding the TextBlock into the grid
            Grid.SetRow(txtDays,0);       //Placing the item in a particular row inside the grid          

            lstBox.Items.Add(mygrid);     //Placing grid inside a listBox    
        }

        RowDefinition rNewRow = new RowDefinition();
        ContentPanel.RowDefinitions.Add(rNewRow);
        ContentPanel.Children.Add(lstBox);
    }
}
于 2012-06-19T14:56:33.810 に答える
1

繰り返しごとに追加しようとしmygridています。ループの外に出して、一度だけ追加されるようにします。lstBoxforeachlstBox.Items.Add(mygrid);

それか、mygrid複数のグリッドが必要な場合はループ内に定義を入れます。

于 2012-06-19T13:34:05.607 に答える