Добавить дочерние элементы к элементу типа 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.