2017-08-11 111 views
0

我目前正在开发一个使用MVVM框架的WPF应用程序。我有这个功能:enter image description here从框架中的页面更新主窗口

我有一个主窗口有一个组合框和框架(我把我的网页)和视图模型。该框架中的一个页面是用户可以添加数据的位置,这些数据用于填充主窗口中的组合框。我的问题是如何从该页面添加数据后自动更新组合框中的项目。顺便说一句,这个页面也有不同的视图模型。

谢谢。

+0

当你的数据库集合中添加元素时,你的问题没有添加到你的'ComboBox'中?如果是这样你尝试使用'ObservableCollection'? – Uwy

+0

是的。我在我的主窗口视图模型中使用了ObservableCollection。数据添加在页面视图模型中,我似乎无法找到更新主要虚拟机的方法。 –

+0

你的问题是如何完成你的'frame'页面的虚拟机与主窗口的虚拟机之间的连接?例如。 'MainWindowVM.AddToComboBox(dataFromPageVM)'? – Blacktempel

回答

0

您可以通过window.top从iframe访问父窗口。你必须在你的页面中写入你在iFrame中加载的代码。

window.top.document.getElementById("combobox_element_id").value='Your New Value'; 

好运

+1

OP问题是关于WPF,而不是关于HTML/JS网页 – Uwy

+2

这是桌面应用程序@Rahul先生。这是行不通的。 –

1

,你可以在页面视图模型已更改的数据建立的事件。然后在窗口视图模型中订阅这些事件并相应地更新组合框项目。

+0

你能否提供一些关于我应该如何从事件开始的细节?我对使用它们并不熟悉。 @ grek40 –

+0

@HunterWinchester你的问题不包含任何代码,所以我不会发明任何代码。你可以阅读如何在那里创建一个非常简单的事件,例如:https://stackoverflow.com/a/9885515/5265292 – grek40

0

您可以将ComboBox(ObservableCollection)的Source DataContext传递给页面ViewModel,以便您可以简单地从页面视图模型修改集合。