表单更新ListView中的一个元素
我想在Xamarin.Forms中使用mvvm更新listview元素。我在网上学习了一些教程,现在我可以在我的listview中添加新项目和删除任何项目。 但是,我无法更新任何特定项目 这是我的ViewModel类:表单更新ListView中的一个元素,listview,mvvm,xamarin.forms,Listview,Mvvm,Xamarin.forms,我想在Xamarin.Forms中使用mvvm更新listview元素。我在网上学习了一些教程,现在我可以在我的listview中添加新项目和删除任何项目。 但是,我无法更新任何特定项目 这是我的ViewModel类: public class CarsViewModels : INotifyPropertyChanged { private ObservableCollection<Car> items; public ObservableCollection&l
public class CarsViewModels : INotifyPropertyChanged
{
private ObservableCollection<Car> items;
public ObservableCollection<Car> Items
{
get { return items; }
set
{
items = value;
OnPropertyChanged("Items");
}
}
public CarsViewModels()
{
Items = new ObservableCollection<Car>()
{
new Car()
{
CarID = 1,
Make = "Tesla Model S"
},
new Car()
{
CarID = 2,
Make = "Audi R8"
},
};
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged([CallerMemberName]string propertyName = "") =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
添加和删除方法有效,但我无法更新汽车模型的make属性。有什么帮助吗?您的汽车类实现了INotifyPropertyChanged吗?谢谢,Jason,您说得对。我已经实现了它并将这段代码添加到我的类中:公共字符串Make{get{return{u Make;}set{u Make=value;OnPropertyChanged(“Make”);}}公共事件PropertyChangedEventHandler PropertyChanged;void OnPropertyChanged([CallerMemberName]string propertyName=”“)=>PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(propertyName));
private void AddNewItemClicked(object sender, EventArgs e)
{
items.Add(new Car{CarID = 3, Make = "new car"});
}
private void RemoveItemClicked(object sender, EventArgs e)
{
Button clickedITem = (Button)sender;
var clickedCar = (Car) clickedITem.BindingContext;
items.Remove(clickedCar);
}
private void ChangeThisItemClicked(object sender, EventArgs e)
{
Button button = (Button)sender;
var clickedCar = (Car)clickedITem.BindingContext;
var changedItem = items.FirstOrDefault(x => x.CarID == clickedCar.CarID);
if (changedItem != null)
{
changedItem.Make = "text has changed";
}
}