将子项添加到Windows Phone 8.1后面的代码中创建的页面类型的元素

时间:2014-10-03 08:46:15

标签: c# windows-phone-8.1 uielement

我可以在后面的代码中创建一个Page类型的新元素,但我希望像UIElement一样添加类型为Grid的子元素:myGrid.Children.Add(myUIElement); }
我没有Children属性并且设置Content属性不起作用。
如何实现此目的?

更新:
这是我到目前为止所做的,但不起作用:

Page myNewPage = new Page();
Grid myGrid = new Grid();
TextBlock myText = new TextBlock();
myText.Text = "I am a TextBlock!";
myGrid.Children.Add(myText);
myNewPage.Content = myGrid;

Frame.Navigate(myNewPage.GetType());

1 个答案:

答案 0 :(得分:2)

Page可以在其UIElement媒体资源中托管一个Content。要添加几个孩子,你必须像在XAML中那样做:添加一个可以包含和布局几个孩子的面板,并将你的元素添加到该面板。

在你的问题中,你谈到了一个名为myGrid的网格。您可以在myGrid中添加和布置项目,然后将myGrid设置为yourPage.Content

您的代码正确构建了页面。您的代码存在的问题是,您的Frame导航到Page的新实例,而不是您创建的实例。 Frame会创建您作为参数传递的类型的新实例。

如果要在代码中完全创建页面,只需创建扩展Page的类并在其构造函数中构建页面:

public class MyPage : Page
{
    public MyPage()
    {
        this.BuildPage();
    }

    private void BuildPage()
    {
        var panel = new StackPanel();
        panel.Children.Add(new TextBlock { Text = "Hello" });
        panel.Children.Add(new TextBlock { Text = "World" });

        this.Content = panel;
    }
}

毕竟,这是InitializeComponent方法在XAML中创建的页面中的作用。