C# 在Xamarin中的ViewModel内部执行image触发器后,如何更新listView?
我有一流的产品 我还有一个ViewModel ProductVm继承自BaseViewModel,这个类BaseViewModel继承自ObserveObject,如 现在,ViewModel产品有了一个可观的集合 还有命令 在PageProduct页面中,有一个视图模型的绑定,因此可以根据listView ProductResults上的更改来更新列表 问题 我希望在用户单击显示pincturea.png或pinctureb.png的按钮后,它会更新集合值和GUI 所以它会更新显示的图像 搜索的解决方案 搜索之后,我看到每个人都说这与 InotifyProperty改变了问题,但据我所知,我已经做了那个部分 这样做C# 在Xamarin中的ViewModel内部执行image触发器后,如何更新listView?,c#,listview,xamarin,mvvm,xamarin.forms,C#,Listview,Xamarin,Mvvm,Xamarin.forms,我有一流的产品 我还有一个ViewModel ProductVm继承自BaseViewModel,这个类BaseViewModel继承自ObserveObject,如 现在,ViewModel产品有了一个可观的集合 还有命令 在PageProduct页面中,有一个视图模型的绑定,因此可以根据listView ProductResults上的更改来更新列表 问题 我希望在用户单击显示pincturea.png或pinctureb.png的按钮后,它会更新集合值和GUI 所以它会更新显示的图像 搜索
public class ProductVm : BaseViewModel
并宣布
private ObservableCollection<Product> _productResults = new ObservableCollection<Product>();
public ObservableCollection<Product> ProductResults
{
get => _productResults ;
set { _productResults = value; OnPropertyChanged(); }
}
但由于我正在处理ViewModel,因此无法访问那里的listview
在我的方法中,我遗漏了什么
private void FavoriteProduct(Product product)
我也可以更新GUI吗?您没有调用模型中已更改的属性 试试这个
public class Product:ObservableObject, IKeyObject
{
[SQLite.PrimaryKey]
public string Id { get; set; } //this is cause i am using sqlite
//other properties
private bool _isFavorite;
public bool IsFavorite
{
get => _ isFavorite;
set { _ isFavorite = value; OnPropertyChanged(); }
}
}
public class ProductVm : BaseViewModel
private ObservableCollection<Product> _productResults = new ObservableCollection<Product>();
public ObservableCollection<Product> ProductResults
{
get => _productResults ;
set { _productResults = value; OnPropertyChanged(); }
}
listview.isRefreshing = true;
//update observableCollection
listview.isRefreshing = false;
private void FavoriteProduct(Product product)
public class Product:ObservableObject, IKeyObject
{
[SQLite.PrimaryKey]
public string Id { get; set; } //this is cause i am using sqlite
//other properties
private bool _isFavorite;
public bool IsFavorite
{
get => _ isFavorite;
set { _ isFavorite = value; OnPropertyChanged(); }
}
}