我可以在后面的代码中创建一个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());
答案 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中创建的页面中的作用。