我有一个MainWindow,在这个MainWindow里面我加载了一个UserControl。 MainWindow包含StackPanel。现在我想从UserControl向该StackPanel添加一个按钮。
如果我直接添加它,它可以(来自MainWindow) - 但不是来自UserControl。
示例:
MainWindow.xaml.cs
public MainWindow()
{
InitializeComponent();
var myTestRadioButton = new RadioButton
{
Name = "TestRadioButton",
Height = 31.5,
Width = 140,
};
MyStackPanel.Children.Add(myTestRadioButton);
}
作品
UserControl1.xaml.cs
public UserControl1()
{
InitializeComponent();
var parentWindow = new MainWindow();
var myTestRadioButton = new RadioButton
{
Name = "TestRadioButton",
Height = 31.5,
Width = 140,
};
parentWindow.MyStackPanel.Children.Add(myTestRadioButton);
}
不起作用。
我尝试创建父窗口的静态实例...
有趣的是 - >我没有得到任何错误消息或类似的东西......它只是不起作用(例如按钮没有显示......)请帮助:) :) :))
答案 0 :(得分:0)
执行此操作var parentWindow = new MainWindow();
您在用户控件中创建new window
而不是对当前MainWindow的引用
public UserControl1()
{
InitializeComponent();
var parentWindow = new MainWindow();
var myTestRadioButton = new RadioButton
{
Name = "TestRadioButton",
Height = 31.5,
Width = 140,
};
//just add something like this
public void AddChildControl(Window MyWindow)
{
MyWindow.MyStackPanel.Children.Add(myTestRadioButton);
}
}
从用户控件更改MainWindow
public MainWindow()
{
InitializeComponent();
var myTestRadioButton = new RadioButton
{
Name = "TestRadioButton",
Height = 31.5,
Width = 140,
};
var usercontrol1= new UserControl1() ;
usercontrol.AddChildControl(this);
}
答案 1 :(得分:0)
你创建了一个窗口的新实例。 (答案是K B)这无论如何都无法发挥作用
如果您真的(无论如何)需要动态GUI,您应该使用另一种方法:
你可能想在你的usercontrol中有一个stackpanel
<Stackpanel x:Name="myStack"/>
代码隐藏:
Usercontrol()
{
myStack.Children.Add(new WhateverControl());
}