代码之家  ›  专栏  ›  技术社区  ›  KalleP

在ViewModel中调用值以异步任务

  •  0
  • KalleP  · 技术社区  · 6 年前

    ID = value.id 在一个调用中,我在ViewModel中执行,但它给了我空值。

    所有代码都在我的视图模型中:

    private int _id;
        public int ID
        {
            get { return _id; }
            set { SetProperty(ref _id, value); }
        }
    
    private TodoItem _todoItem;
        public TodoItem TodoItem
        {
            get => _todoItem;
            set
            {
                _todoItem = value;
                ID = value.id;
            }
        }
    

    这是我调用RestService的地方,我包含这个id以从api获得正确的调用:

    public async Task Get()
        {
            //_todoItem.id is null!!!!
            var PinAsync = await _service.DataAsync(_todoItem.id, "1000");           
    
            try
            {
                foreach (var i in PinAsync)
                {
    
    
                    var todolat = Convert.ToDouble(Lat, System.Globalization.CultureInfo.InvariantCulture);
                    var todolon = Convert.ToDouble(Lon, System.Globalization.CultureInfo.InvariantCulture);
    
    
    
                    var todoPin = new Pin
                    {
                        Type = PinType.Place,
                        Position = new Position(todolat, todolon),
                        Label = "Hey"
                    };
                    Map.Pins.Add(todoPin);
                }
            }
            catch (Exception err)
            {
                Debug.WriteLine("No! {0}", err);
            }
        }
    

    传递的值不为空。我可以用它在xaml中设置文本。我只是不能把它和我的休息电话一起发送。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Bruno Caceiro    6 年前

    首先,我将重命名您的项目,而不是使用类名。

    public TodoItem MyTodoItem
        {
            get => _todoItem;
            set
            {
                _todoItem = value;
                ID = value.id;
            }
        }
    

    然后:

     var PinAsync = await _service.DataAsync(MyTodoItem.ID, "1000");