将数据从命令传递到服务

时间:2018-01-09 23:22:28

标签: c# xamarin mvvm data-binding xamarin.forms

当我点击一个绑定命令的按钮时,我正试图将一些数据从一个页面的代码隐藏传递给服务。 所以,让我们在example.xaml页面中说我有一个带命令的按钮,在example.xaml.cs上我有一些我想要传递的数据和命令。  这可能吗? 这是我的观点:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="HelloWorld.Pages.MapPage"
         xmlns:vm="clr-namespace:HelloWorld.ViewModel"
          xmlns:local="clr-namespace:HelloWorld.Classes;assembly=HelloWorld">
  <Button Command="{Binding GetInfo}"
            Text="Hello World"/>

这是我背后的代码

 Models.Data data;
    public MapPage(List<Models.Info> info, Models.Data data)
    {
        InitializeComponent();
        this.data = data;

        //i want to pass this parameter to the service
          var somedata = "John doe";
    }

这是我点击按钮时调用的视图模型

public ICommand GetInfo
    {
        get
        {
            return new Command(async () =>
            {
                Info = await _apiServices.GetInfosAsync();
                await Application.Current.MainPage.Navigation.PushAsync(new MapPage(Data, info));
            });
        }
    }

这是服务页面:

public async Task<List<Info>> GetInfosAsync()
    {
           //  ==i would like to use the data in here, the var some data ==
           var keyvalues = new List<KeyValuePair<string, string>>
            {
                new KeyValuePair<string, string>("TheData", somedata),
                new KeyValuePair<string, string>("MoreData", "example"),
        var request = new HttpRequestMessage(HttpMethod.Post, 
       "http:someurl/");
        request.Content = new FormUrlEncodedContent(keyvalues);
        var client = new HttpClient();
        var response = await client.SendAsync(request);
        var res = await response.Content.ReadAsStringAsync();
    }

json没问题,当我对键值对中的数据进行硬编码时它会返回一些信息,但我不想对数据进行硬编码。 所以这几乎是我的代码。是否可以通过按钮点击传递数据?提前谢谢!

0 个答案:

没有答案