繁体   English   中英

从动态添加的用户控件中调用函数

[英]Calling a function from a dynamically added user control

在使用WPF玩游戏时,另一个主题和一个难题随之浮出水面,它在于试图从动态添加的用户控件中调用一个函数并为其传递一个值。
对于当前示例,我有一个用户控件,该控件具有属性“ Secret”和其中的一个名为“ PublishSecret”的按钮,构造函数将Secret的值设置为随机数。 在MainWindow中,我还有另一个名为“ AddSecretContainer”的按钮,该按钮向该窗口添加了该用户控件的另一个实例,在它旁边,我有一个名为“ PublishedSecret”的文本框。 MainWindow中还定义了一个简单的方法,它是:

public void PublishSecret(int secret)
{
    this.PublishedSecret = secret;
}

现在,无需传递此秘密,我就可以使用带有冒泡效果的路由命令。 但是,当单击PublishSecret按钮时,如何调用PublishSecret并从用户控件中为其提供Secret的本地值?

如果您的UserControl是动态添加的,那么我认为您可以在后面的主视图模型/代码中访问它的引用。 这使您的情况变得轻松而简单。 您说过有一个名为PublishSecretButton ,我还假设单击它会启动一些功能。

我的第一个建议是最简单的。 将该功能放入一个public方法中,该方法可以从ClickICommand处理程序中调用,然后只需从主视图模型中调用该方法即可:

childUserControl.PublishSecret();

如果我误解了您的问题,请告诉我。


更新>>>

好的,抱歉,我现在有了你。 您可以声明一个delegate ,将该类型的属性添加到您的子UserControl并在主视图模型中附加一个处理程序。 然后,您可以调用delegate并在父视图模型的处理程序中,可以调用您的方法。 有关此技术的更多信息,请参见我对“ 视图模型之间传递参数”问题的回答。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM