在下面的示例中,我想将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方法也将在那里可用.
在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方法也将在那里可用.