【问题标题】:How to pass a string from a view to its view model in Xamarin forms using mvvm light如何使用 mvvm light 将字符串从视图传递到 Xamarin 表单中的视图模型
【发布时间】:2018-07-02 15:51:56
【问题描述】:

我的视图通过其构造函数接收一个 json 字符串,然后我想立即将字符串传递给它的视图模型。我对 Xamarin.forms 非常陌生,并且有一个说明我应该如何去做。我想我应该以某种方式使用指挥。如果有帮助,我正在使用 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 时避免使用消息中心(这可能是错误的),所以我试图找出将简单值/对象从视图发送到视图模型的正确方法。

【问题讨论】:

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


    【解决方案1】:

    尝试使用Messaging Center

    Here's a link to help you,

    我仍然想知道用例是什么,以及是否有更好的方法,因为我确信可以。给我们看一些代码。

    【讨论】:

    • 我添加了一些代码。根据我的阅读,我的印象是在 mvvm 中应该避免使用消息中心。基本上,我试图弄清楚如何将简单的值/对象从视图发送到视图模型。
    猜你喜欢
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2018-03-15
    • 2011-10-22
    • 1970-01-01
    相关资源
    最近更新 更多