我有UserControlViewModel
這引起了一個事件:從哪裏進入的DataContext中的WinRT XAML用戶控件
public event EventHandler<EventArgs> StuffDone;
的UserControlViewModel
一個對象被創建和初始化裏面MainPageViewModel
:
this.userControlViewModel = new UserControlViewModel();
MainPageViewModel
是查看 - 型號爲MainPage
。
在MainPage.xaml中,我有下面的代碼放置UserControlView
UserControl
在MainPage
並初始化其DataContext
:
<views:UserControlView DataContext="{Binding userControlViewModel, Mode=OneWay}" IsHitTestVisible="False"></views:UserControlView>
到目前爲止,一切工作正常。
現在我想訂閱UserControlView
內的StuffDone
事件。我發生的第一件事是在Loaded
事件處理程序UserControlView
內部執行;然而,在那一點的DataContext
仍然是null
。掃描UserControl
事件的其餘部分,我根本沒有線索。
那麼,在哪裏可以獲得DataContext
並訂閱其活動?
在此先感謝。
痛苦的。沒有事件,並且DataContext依賴項屬性上沒有重寫元數據。回家吧,微軟,你喝醉了。這傢伙有一個解決方案在這裏:http://dotneteers.net/blogs/vbandi/archive/2013/01/23/datacontextchanged-event-for-winrt.aspx哈克。 – Will 2013-03-08 16:39:05
我已經做到了這一點,它對我來說工作得很好。但我用「Mode = TwoWay」。在UserControl的Loaded事件中,我可以訪問ViewModel(當然,您必須將DataCotext投射到ViewModel才能訪問它) – SachiraChin 2013-03-09 02:09:05
@Sach,完成了什麼? [Will](http://stackoverflow.com/users/1228/will)會提出什麼建議?如果是別的,你能舉一些例子說明你做了什麼嗎? – TheBlueSky 2013-03-10 16:45:23