我有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