我对WinRT中的绑定有疑问。 我有一个像这样的Viewmodel:
public class MainPageViewModel : INotifyPropertyChanged
{
private ObservableCollection<Vehicle> _vehicles = new ObservableCollection<Vehicle>();
public ObservableCollection<Vehicle> Vehicles
{
get { return _vehicles; }
set { _vehicles = value; }
}
我还有一些属性可以从这个主列表中获取值,例如
public int GetType1Vehicles
{
get { return Vehicles.Where(x => x.Type == Type1).Count(); }
}
public int TotalVehicles
{
get { return Vehicles.Count(); }
}
我将UI文本框绑定到“GetType1Vehicles”,将另一个文本框绑定到“TotalVehicles”。问题是,当我更新车辆清单时,所有车辆的ListView都已正确更新,但总计和类型没有。我做错了什么? 有人可以帮帮我吗?谢谢!
UPDATE 我发现了一个工作场所,但我不确定这是最好的方法。每次我从列表中更改一些时,请手动调用方法:
RaisePropertyChanged("GetType1Vehicles");
RaisePropertyChanged("TotalVehicles");
是正确的方法吗?
答案 0 :(得分:0)
你是正确的,你需要手动调用RaisePropertyChanged。无论如何,当你可以绑定到“Vehicles.Count”时,为什么你有一个TotalVehicles属性?
答案 1 :(得分:0)
大卫是对的,为什么这个TotalVehicles属性?
使用ObservableCollection,您不应该调用Count()方法,只需使用 Count属性。 如果您只想计算具有特定值的项目,而不是集合的大小,那么Count方法很有用。这是项目的工作。