如何在WP7上动态填充网格?

3
这是我在WP7中的第一个程序,所以我遇到了一些问题。
我试图用被另一个方法购买的物品列表来填充网格。目前我已经完成了以下工作:
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;

    }
}

方法Buscar()确实按预期返回了列表,但是当我单击按钮时它什么也没发生,实际上,甚至构造函数中的白色绘制都没有发生。
提前感谢。
1个回答

1

你的代码里有一些相当不规范的操作,应该在XAML中完成。请修改。

gridResult = myGrid;

对于

gridResult.Children.Add(myGrid);

我认为你不能仅仅改变静态UI元素的引用。


可以了,谢谢!但是还有一个问题,当按下按钮时,页面没有被填充。 - Markissimo
2
它可以工作,但页面没有填充:)?尝试为所有列和行定义添加长度和宽度,例如rNewRow.Height = new GridLength(100); colData.Width = new GridLength(100); - Dante

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接