0

我对 WinRT 中的绑定有疑问。我有一个像这样的视图模型:

    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 都正确更新,但 Total 和 Type 没有。我做错了什么?任何人都可以帮助我吗?谢谢!

更新我找到了一个解决方法,但我不确定这是最好的方法。每次我从列表中更改一些时,手动调用方法:

RaisePropertyChanged("GetType1Vehicles");
RaisePropertyChanged("TotalVehicles");

是正确的方法吗?

4

2 回答 2

0

大卫是对的,为什么这个 TotalVehicles 财产?

使用 ObservableCollection,您不应该调用 Count() 方法,只需使用Count 属性。如果您只想计算具有特定值的项目,而不是集合的大小,则 Count 方法很有用,这是属性的工作。

于 2013-04-19T15:05:02.263 回答
0

您是正确的,因为您需要手动调用 RaisePropertyChanged。无论如何,当您可以绑定到“Vehicles.Count”时,为什么还要拥有 TotalVehicles 属性?

于 2013-04-15T13:32:52.063 回答