0

您好,感谢您的帮助。

我有一个带有名为 stackpanel 的堆栈面板的窗口,并且我在 xaml 中添加了一些自定义控件,效果很好。

现在我的程序在堆栈面板内动态创建了一些用户控件(带有按钮)。我希望能够单击用户控件内的按钮并将另一个控件动态添加到堆栈面板。

我似乎无法让它工作,因为它在不同的班级。如何从另一个控件将控件添加到堆栈面板?我也不知道如何使用直接广播。

谢谢!

4

2 回答 2

1

stackpanel.Children.Add(new Control());

于 2012-08-14T12:13:20.607 回答
0

堆栈面板需要提供一个方法(在本例中我们称之为myCreateMethod)来创建控件,并且该方法必须可由用户控件访问。当您创建用户控件时,将它传递给您的堆栈面板的句柄,例如

MyUserControl mycontrol = new MyUserControl(this);

在您的用户控件中,您存储参考:

Stackpanel parent;

public MyUserControl(Stackpanel parent){
  this.parent = parent;
}

然后您可以调用该方法来创建控件,如下所示:

parent.myCreateMethod();

我希望这能提供足够的洞察力以使示例适应您的需求。

编辑:您显然可以将有关新控件的详细信息作为参数传递给 myCreateMethod()。或者您在用户控件中创建新控件,将其传递给堆栈面板,然后 myCreateMethod()“仅”显示它。

于 2012-08-14T01:59:08.580 回答