如何使用mvvm light将字符串从视图传递到Xamarin形式的视图模型

时间:2018-07-02 15:51:57

标签: c# xamarin xamarin.forms mvvm-light

我的视图通过其构造函数接收json字符串,然后我想立即将字符串传递给其视图模型。我对Xamarin.forms非常陌生,请注意我应该如何做。我认为我应该以某种方式使用Commanding。如果有帮助,我正在使用Laurent Bugnion(GalaSoft)的MvvmLightLibs NuGet。

这是一些代码。我正在使用文件选择器获取json文件,然后反序列化并获取文本

FileData fileData = await CrossFilePicker.Current.PickFile();

fileName = fileData.FileName;

if (fileName.EndsWith(".json", StringComparison.CurrentCulture))

{                        
     MockJsonFile mockJsonFile = JsonConvert.DeserializeObject<MockJsonFile>(File.ReadAllText(fileData.FilePath));
     string json = JsonConvert.SerializeObject(mockJsonFile, Formatting.Indented);                       
     FilePathlabel.Text = json;                                                         
}

这是在我称为view1的代码后面完成的。我正在尝试将此文本发送到view1的视图模型“ viewModel1”。如果可以完成,则可以从viewModel1导航到view2,将字符串按原样传递到view2的构造函数中。

public void GoToView2(string jsonString)
{
     _navigationService.NavigateTo(ViewModelLocator.view2, jsonString);
}

从这里开始,我可以使用将字符串从view1传递到viewModel1的任何过程,以将view2传递给viewModel2。从我所读的内容中,您想避免在使用MVVM时使用消息传递中心(这可能是错误的),因此我试图弄清楚从视图向viewModel发送简单值/对象的正确方法是什么。

1 个答案:

答案 0 :(得分:0)

尝试使用Messaging Center

Here's a link to help you,

我仍然想知道用例是什么,是否有更好的方法,因为我敢肯定会有。给我们看一些代码。