加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:19:37 所属栏目:百科 来源:网络整理
导读:我有一个“打开”命令,用户可以在其中选择一个文件.当选择文件时(因此我将文件路径作为字符串)我从CompositionContainer中获取了一个新的DataView实例(具有NonShared和CreationPolicy属性)并将其显示在特定区域中.我的DataView通过DI获取其DataViewModel.现
我有一个“打开”命令,用户可以在其中选择一个文件.当选择文件时(因此我将文件路径作为字符串)我从CompositionContainer中获取了一个新的DataView实例(具有NonShared和CreationPolicy属性)并将其显示在特定区域中.我的DataView通过DI获取其DataViewModel.现在我的问题是如何将选定的文件路径传递给NEW(在选择文件后创建)ViewModel?

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

if (fileDialog.ShowDialog() == true)
{               
    Container.ComposeExportedValue("FilePath",fileDialog.FileName);
    IRegion contentRegion = regionManager.Regions[Regions.CONTENT];
    contentRegion.Add(Container.GetExportedValue<IDataView>(),null,true);
} 

[ImportingConstructor]
public DataViewModel(IRegionManager regionManager,[Import("FilePath")] string filePath)
{ }

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

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读