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

时间:2013-11-19 23:24:30

标签: c# wpf

播放WPF时出现了另一个主题和难点,它在于尝试从动态添加的用户控件中调用函数,并向其传递值。
对于当前示例,我有一个具有属性" Secret"并且其中的一个按钮名为" PublishSecret",构造函数将Secret的值设置为随机数。在MainWindow中,我有另一个名为" AddSecretContainer"的按钮。这会向窗口添加一个此用户控件的附加实例,旁边有一个名为" PublishedSecret"的文本框。 MainWindow中也定义了一个简单的方法,它是:

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

现在没有通过这个秘密,我可以使用带有冒泡效果的路由命令。但是,当点击PublishSecret按钮时,如何调用PublishSecret为其提供来自用户控件的Secret的本地值?

1 个答案:

答案 0 :(得分:0)

如果动态添加了UserControl,那么我假设您可以在主视图模型/代码后面访问它的引用。这使您的情况变得简单。你说有一个名为Button的{​​{1}},我也假设点击它会启动一些功能。

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

ICommand

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


更新>>>

好的抱歉,我现在收到你了。您可以声明childUserControl.PublishSecret(); ,向您的孩子delegate添加该类型的属性,并在主视图模型中附加处理程序。然后你可以调用UserControl并在父视图模型的处理程序中调用你的方法。有关此技术的详细信息,请参阅我对Passing parameters between viewmodels问题的回答。