绑定到只有get方法的Property

时间:2013-04-14 18:34:55

标签: data-binding winrt-xaml

我对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");

是正确的方法吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

大卫是对的,为什么这个TotalVehicles属性?

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