简体   繁体   中英

How to populate dynamically a grid on WP7?

this is my very first program in WP7, so i have some issues.

I'm trying to populate a grid with an list of objects that has been bought by another method. Here what i made so far:

public partial class MainPage : PhoneApplicationPage
{
    private List<Row> lsResult;
    private Grid myGrid = new Grid();
    private int i = 0;

    // Constructor
    public MainPage()
    {
        InitializeComponent();

        ColumnDefinition colData = new ColumnDefinition();
        ColumnDefinition colOcorrencia = new ColumnDefinition();
        ColumnDefinition colSituacao = new ColumnDefinition();
        myGrid.ColumnDefinitions.Add(colData);
        myGrid.ColumnDefinitions.Add(colOcorrencia);
        myGrid.ColumnDefinitions.Add(colSituacao);
        myGrid.ShowGridLines = true;
        SolidColorBrush myBrush = new SolidColorBrush(Colors.White);
        myGrid.Background = myBrush;
        gridResult = myGrid;

    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        i = 0;
        lsResult = null;
        lsResult = Rastrear.Busca(txtNumber.Text);
        foreach (Row r in lsResult)
        {
            RowDefinition rNewRow = new RowDefinition();
            myGrid.RowDefinitions.Add(rNewRow);

            TextBlock lblData = new TextBlock();
            lblData.Text = r.Data.ToString();
            lblData.HorizontalAlignment = HorizontalAlignment.Center;
            lblData.VerticalAlignment = VerticalAlignment.Center;
            Grid.SetColumnSpan(lblData, 1);
            Grid.SetRow(lblData, i);

            TextBlock lblOcorrencia = new TextBlock();
            lblOcorrencia.Text = r.Ocorrencia.ToString() ;
            Grid.SetColumnSpan(lblOcorrencia, 2);
            Grid.SetRow(lblOcorrencia, i);

            TextBlock lblSituacao = new TextBlock();
            lblSituacao.Text = r.Situacao.ToString();
            Grid.SetColumnSpan(lblSituacao, 3);
            Grid.SetRow(lblSituacao, i);
            i++;

            myGrid.Children.Add(lblData);
            myGrid.Children.Add(lblOcorrencia);
            myGrid.Children.Add(lblSituacao);   
        }
        gridResult = myGrid;

    }
}

The method Buscar() is returning the list as it should, but when i click on the button it doesn't do anything, not even the paint to white on the constructor happens actually.

thanks in advance

You're doing some pretty shady stuff in your code behind that i'm used to seeing and should be done in xaml. Change this

gridResult = myGrid;

to

gridResult.Children.Add(myGrid);

I don't think you can just change references of static UI elements like that.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM