c# – 如何将参数从parentViewModel传递给我的ViewModel?

c# – 如何将参数从parentViewModel传递给我的ViewModel?,第1张

概述我有一个“打开”命令,用户可以在其中选择一个文件.当选择文件时(因此我将文件路径作为字符串)我从CompositionContainer中获取了一个新的DataView实例(具有NonShared和CreationPolicy属性)并将其显示在特定区域中.我的DataView通过DI获取其DataViewModel.现在我的问题是如何将选定的文件路径传递给NEW(在选择文件后创建)ViewMode 我有一个“打开”命令,用户可以在其中选择一个文件.当选择文件时(因此我将文件路径作为字符串)我从CompositionContainer中获取了一个新的DataVIEw实例(具有NonShared和CreationPolicy属性)并将其显示在特定区域中.我的DataVIEw通过DI获取其Dataviewmodel.现在我的问题是如何将选定的文件路径传递给NEW(在选择文件后创建)viewmodel?

只要我创建了一个VIEw,我的第一个方法看起来很聪明并且很有用.但是由于我创建了多个视图(Tabs),以下方法不起作用,因为我不能多次组合相同的值.

if (@[email protected]() == true){                   Container.ComposeExportedValue("@R_419_6852@Path",@R_419_6852@Dialog.@R_419_6852@name);    IRegion contentRegion = regionManager.Regions[Regions.CONTENT];    contentRegion.Add(Container.GetExportedValue<IDataVIEw>(),null,true);} [importingConstructor]public Dataviewmodel(IRegionManager regionManager,[import("@R_419_6852@Path")] string @R_419_6852@Path){ }

有没有其他方法将我的字符串参数注入/传递给viewmodel?

解决方法 我认为您需要使用服务来打开文件而不是通过MEF导出值.

如果您拥有所有viewmodel使用的公共服务,他们只需导入您的服务并调用Open@R_419_6852@()方法即可.

我有一个MVVM open source project,这有一个快速的例子.请参阅模板示例here.

另请查看最佳答案here,他们有另一个实现.

总结

以上是内存溢出为你收集整理的c# – 如何将参数从parentViewModel传递给我的ViewModel?全部内容,希望文章能够帮你解决c# – 如何将参数从parentViewModel传递给我的ViewModel?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1233903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存