如何将 UI 个子项添加到空 WPF 页面?

How do I add UI Children to an empty WPF-Page?

我有一个 MainWindow,它是一个 NavigationWindow。在这个 MainWindow 中,我想切换几个页面。其中一个页面必须由代码动态生成,而不是 XAML。当我之前有一个正常的 window 时,我可以像这样添加 UI 个组件:

Button b = new Button();
b.Content = "Hello";
this.AddChild(b);

或者,如果我首先使用此方法添加(例如)StackPanel,我可以使用以下方法将子级添加到此 StackPanel:

myPanel.Children.Add(b);

但是,页面 Class 没有子属性或 AddChild 方法。 目前我找到的唯一方法是:

AddVisualChild(b);

页面显示了,但我没有看到我用这种方法添加的任何组件。 那么如何正确地将 Children 添加到 WPF 页面?

首先,Window.AddChild在添加多个object时会抛出异常,因为Window是一个ContentControlPage 只允许 1 个 child。因此您使用 Page.Content 属性 设置 child。所以你想在你的 Page 中添加一个容器,然后将 children 添加到容器中。
例如:

Button b = new Button();
b.Content = "Hello";
StackPanel myPanel = new StackPanel();
myPanel.Children.Add(b);
this.Content = myPanel;

我不确定这是否适合您,但您可以尝试将页面内容设置为用户控件。例如。使用 StackPanel 并将所有子项添加到其中。之后将 Page 的内容设置为 Stackpanel.

这是 MainWindow 构造函数中的一个惰性示例。

public MainWindow()
{
    InitializeComponent();

    StackPanel panel = new StackPanel();
    Button b1 = new Button {Content = "Hello"};
    Button b2 = new Button {Content = "Hi"};

    panel.Children.Add(b1);
    panel.Children.Add(b2);

    Page page = new Page {Content = panel};

    this.Content = page;
}