小编mkm*_*ray的帖子

在ViewModel构建期间或之后MVVM加载数据?

我的通用问题是标题所述,是否最好在ViewModel构造期间或之后通过某些Loaded事件处理加载数据?

我猜测答案是在构建之后通过一些Loaded事件处理,但我想知道ViewModel和View之间如何最清晰地协调?

这里有关于我的情况以及我想要解决的特定问题的更多细节:

我正在使用MVVM Light框架以及Unity for DI.我有一些嵌套的视图,每个视图都绑定到相应的ViewModel.ViewModel通过Laurent Bugnion放入MVVM Light的ViewModelLocator理念绑定到每个View的根控件DataContext.这允许通过静态资源查找ViewModels并通过依赖注入框架控制ViewModels的生命周期,在本例中为Unity.它还允许Expression Blend查看与ViewModel相关的所有内容以及如何绑定它们.

所以无论如何,我有一个父View,它有一个ComboBox数据绑定到其ViewModel中的ObservableCollection.ComboBox的SelectedItem也绑定(双向)到ViewModel上的属性.当ComboBox的选择发生变化时,这将触发其他视图和子视图中的更新.目前我正在通过MVVM Light中的Messaging系统实现这一目标.当您在ComboBox中选择不同的项目时,这一切都非常有效.

但是,ViewModel通过一系列初始化方法调用在构造期间获取其数据.如果我想控制ComboBox的初始SelectedItem是什么,这似乎只是一个问题.使用MVVM Light的消息传递系统,我目前已经设置了ViewModel的SelectedItem属性的setter是广播更新的设置者,另一个感兴趣的ViewModels注册用于它们的构造函数中的消息.看来我正在尝试在构造时通过ViewModel设置SelectedItem,这样就不允许构建子ViewModel并进行注册.

在ViewModel中协调数据加载和SelectedItem初始设置的最简洁方法是什么?我真的很想坚持在View的代码隐藏中尽可能少地使用合理的代码.我想我只需要一种方法让ViewModel知道什么时候有东西已经加载,然后它可以继续加载数据并完成设置阶段.

在此先感谢您的回复.

data-binding constructor onload viewmodel mvvm-light

26
推荐指数
2
解决办法
2万
查看次数

尝试在jQuery show()周围事件之前和之后触发

我试图在一些第三方代码出现模式对话框后获得一段JavaScript运行.我看到了一个非常巧妙的劫持jQuery show函数的想法,但不幸的是它没有用.我猜这个想法曾经在2009年用于旧版本的jQuery,但现在还没有在最新版本上使用.这是一个jsFiddle的实现和示例:

http://jsfiddle.net/mkmurray/drv5w/2/

正如您通过运行示例所看到的,它将警告'beforeShow'事件,但不会警告'afterShow事件',并且通过一些调试我可以看到它没有完全调用'newCallback'函数.

提前感谢您提供的任何帮助.

jquery events

9
推荐指数
1
解决办法
5595
查看次数