Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight:绑定到跨viewmodels共享的数据_Silverlight_Mvvm_Binding_Viewmodel_Caliburn.micro - Fatal编程技术网

Silverlight:绑定到跨viewmodels共享的数据

Silverlight:绑定到跨viewmodels共享的数据,silverlight,mvvm,binding,viewmodel,caliburn.micro,Silverlight,Mvvm,Binding,Viewmodel,Caliburn.micro,我已经创建了一个名为JsData的类,并在App.xaml.cs中对其进行了实例化,以便可以从多个viewmodels访问它。JsData有几个ObservableCollection、一些配置属性和一些方法,这些方法可以处理从远程服务器自动提取数据的过程 现在问题来了。用最少的编码将全局数据绑定到视图是否方便?另外,我用的是Caliburn.Micro。使用消息传递将PropertyChanged事件通知给viewmodels是否可行和合适?我认为最好的方法是创建一个视图模型可以实现的服务。这

我已经创建了一个名为JsData的类,并在App.xaml.cs中对其进行了实例化,以便可以从多个viewmodels访问它。JsData有几个ObservableCollection、一些配置属性和一些方法,这些方法可以处理从远程服务器自动提取数据的过程


现在问题来了。用最少的编码将全局数据绑定到视图是否方便?另外,我用的是Caliburn.Micro。使用消息传递将PropertyChanged事件通知给viewmodels是否可行和合适?

我认为最好的方法是创建一个视图模型可以实现的服务。这样,需要数据的视图模型就可以实现服务,而服务更灵活,因为它可以注入到视图模型构造中。这将使视图模型更加解耦,并尊重mvvm模式

我不会使用消息传递来不通知更改,这会产生不必要的开销。您只需要让视图模型实现inotifypropertychanged,然后在构造函数中获取服务,然后将服务值传递给视图模型中引发属性更改事件的属性


如果您需要定义服务的帮助,请告诉我,我将发布一个示例

,消息传递确实有点开销。但我想使用全局数据存储库的原因是,在我的场景中,要处理的数据不是很小,在我的场景中,执行数据刷新迭代实际上需要相当长的时间。顺便说一句,这是一个问题,到目前为止我还没有找到任何解决方案-我必须桥接现有的javascript库(同步),即从SL调用JS。我尝试从JS或SL异步包装它,但没有成功。它实际上是ajax,但整个JS都是基于同步的(直到它返回为止)。这就是我所拥有的一切。总之,如果root viewmodel负责管理在整个应用程序中共享的数据存储库,我想这可能会更省时、更实惠。