2011-04-07 55 views
0

我需要(我上的Silverlight 4.0的工作),一個優雅的解決使用MVVM模式解決了這個簡單的問題(?)像這樣(說):主頁XAML來管理用戶控件的事件

<uc:MyCustomUC1> 
<uc:MyCustomUC2> 

每個人都有自己的視圖模型,這兩個用戶控件是相互獨立的。

當MyCustomUC1中的異步操作完成時,我希望調用MyCustomUC2的viewmodel中的ICommand,從而刷新MyCustomUC2中的數據。我希望這是由父頁面完成的,並且都是在xaml中完成的。 在用戶控件中暴露依賴屬性,事件處理程序等......任何東西都可以,因爲我擁有用戶控件......無論什麼是有道理的。

任何想法?

+0

看起來好像兩個答案都可以,但對我來說並不夠簡單(對不起,我會在你的答案上做更多的閱讀)。同時,我正在研究使用附加行爲作爲解決方案。有點像迄今爲止,但還沒有完成我的想法。將盡快回復。 – DeeStackOverflow 2011-04-25 19:50:44

回答

1

使用Mvvm Lights messenger,您可以在MyCustomUC2的viewmodel中註冊一個偵聽器來刷新。然後在MyCustomUC1的異步回調中,發送消息進行刷新。

+0

這似乎是太多的工作 - 第三方類和大量的代碼。使用現有的類不是更簡單嗎? – DeeStackOverflow 2011-04-08 18:19:50

+0

我相信MVVMlight Messenger類(Observer模式)恰好適合您的需求,它不會太多工作,事實上它會讓您的生活更輕鬆。 Messenger.Default.Send (payload); Messenger.Default.Subscribe (SomeMethod) – 2011-04-11 15:28:32

0

你可以使用PropertyObserver,我相信你可以在這裏找到信息: Property Observer

它將允許您檢查某個ViewModel中的某些內容何時發生更改,然後在另一個ViewModel中採取適當的操作。我最近在一個項目中使用了它,它工作得很好。

道歉,如果我不正確地拿起這個問題。

+0

一旦我將屬性觀察者添加到視圖模型中,父級控件是否可以純粹在xaml中進行控制? – DeeStackOverflow 2011-04-12 14:18:36

+0

@DeeStackOverflow:是的,它可以。 – MacNET 2011-04-19 12:51:46