2017-08-11 63 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,以便您可以簡單地從頁面視圖模型修改集合。