播放WPF时出现了另一个主题和难点,它在于尝试从动态添加的用户控件中调用函数,并向其传递值。
对于当前示例,我有一个具有属性" Secret"并且其中的一个按钮名为" PublishSecret",构造函数将Secret的值设置为随机数。在MainWindow中,我有另一个名为" AddSecretContainer"的按钮。这会向窗口添加一个此用户控件的附加实例,旁边有一个名为" PublishedSecret"的文本框。 MainWindow中也定义了一个简单的方法,它是:
public void PublishSecret(int secret)
{
this.PublishedSecret = secret;
}
现在没有通过这个秘密,我可以使用带有冒泡效果的路由命令。但是,当点击PublishSecret按钮时,如何调用PublishSecret为其提供来自用户控件的Secret的本地值?
答案 0 :(得分:0)
如果动态添加了UserControl
,那么我假设您可以在主视图模型/代码后面访问它的引用。这使您的情况变得简单。你说有一个名为Button
的{{1}},我也假设点击它会启动一些功能。
我的第一个建议是最简单的。将该功能放入PublishSecret
方法中,该方法将从您的public
或Click
处理程序调用,然后只需从主视图模型中调用该方法:
ICommand
如果我误解了你的问题,请告诉我。
更新>>>
好的抱歉,我现在收到你了。您可以声明childUserControl.PublishSecret();
,向您的孩子delegate
添加该类型的属性,并在主视图模型中附加处理程序。然后你可以调用UserControl
并在父视图模型的处理程序中调用你的方法。有关此技术的详细信息,请参阅我对Passing parameters between viewmodels问题的回答。