Добавить дочерние элементы к элементу типа Page, созданному в коде Windows Phone 8.1

Я могу создать новый элемент типа 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 ответ

Решение

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.

Другие вопросы по тегам