如何在MvxListView中的MvxListView中绑定ItemClick

  发布于 2023-02-12 20:23

在下面的示例中,我想将ItemClick命令绑定到MvxListView中的Item.在这里,我在ViewModel中有一个包含Dog列表的Person列表.

的ItemsSource HasDogs结合工作正常.

当MvvmCross尝试将ItemClick SelectDogCommand绑定到Viewmodel 中的ICommand时,我得到此异常.

[0:] 
MvxBind:Warning: 11,30 Unable to bind: source property source not found Property:SelectDogCommand on Person
[0:] MvxBind:Warning: 11,30 Unable to bind: source property source not found Property:SelectDogCommand on Person
12-04 15:05:03.062 I/mono-stdout(16338): MvxBind:Warning: 11,30 Unable to bind: source property source not found Property:SelectDogCommand on Person

希望你能帮忙.

这是我的例子:

public class FirstViewModel:MvxViewModel
{
    private List _persons;
    public List Persons
    {
      get { return _persons; }
      set { _persons = value; }
    }

    private Cirrious.MvvmCross.ViewModels.MvxCommand _selectDog;
    public System.Windows.Input.ICommand SelectDogCommand
    {
        get
        {
            _selectDog = _selectDog ?? new Cirrious.MvvmCross.ViewModels.MvxCommand(SelectDog);
            return _selectDog;
        }
    }

    private void SelectDog(Dog item)
    {
        ShowViewModel(new DetailViewModel.Parameters{dog = item});
    }

}

public class Person
{
    private string _name;
    private List _hasDogs;

    public List HasDogs
    {
      get { return _hasDogs; }
      set { _hasDogs = value; }
    }

    public string Name
    {
      get { return _name; }
      set { _name = value; }
    }
}

public class Dog{...}

Android View Xml:

的firstView:


    

item_person:



    
    

Stuart.. 7

DataContext为您的个人列表项是Person-让你的SelectDogCommand需要是部分Person类-比如类似:

public class Person
{
    private string _name;
    private List _hasDogs;

    public List HasDogs
    {
      get { return _hasDogs; }
      set { _hasDogs = value; }
    }

    public string Name
    {
      get { return _name; }
      set { _name = value; }
    }

    private Cirrious.MvvmCross.ViewModels.MvxCommand _selectDog;
    public System.Windows.Input.ICommand SelectDogCommand
    {
        get
        {
            _selectDog = _selectDog ?? new Cirrious.MvvmCross.ViewModels.MvxCommand(dog => _parent.SelectDog(dog));
            return _selectDog;
        }
    }

    private FirstViewModel _parent;
    public Person(FirstViewModel parent)
    {
        _parent = parent;
    }
}

或者你可以让Person继承自MvxNavigatingObject(或MvxPropertyChanged或MvxViewModel) - 在这种情况下,ShowViewModel方法也将在那里可用.

1 个回答
  • DataContext为您的个人列表项是Person-让你的SelectDogCommand需要是部分Person类-比如类似:

    public class Person
    {
        private string _name;
        private List<Dog> _hasDogs;
    
        public List<Dog> HasDogs
        {
          get { return _hasDogs; }
          set { _hasDogs = value; }
        }
    
        public string Name
        {
          get { return _name; }
          set { _name = value; }
        }
    
        private Cirrious.MvvmCross.ViewModels.MvxCommand<Dog> _selectDog;
        public System.Windows.Input.ICommand SelectDogCommand
        {
            get
            {
                _selectDog = _selectDog ?? new Cirrious.MvvmCross.ViewModels.MvxCommand<Dog>(dog => _parent.SelectDog(dog));
                return _selectDog;
            }
        }
    
        private FirstViewModel _parent;
        public Person(FirstViewModel parent)
        {
            _parent = parent;
        }
    }
    

    或者你可以让Person继承自MvxNavigatingObject(或MvxPropertyChanged或MvxViewModel) - 在这种情况下,ShowViewModel方法也将在那里可用.

    2023-02-12 20:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有