Catel框架 - 懒惰属性

时间:2015-06-14 12:34:47

标签: c# wpf catel

我试图用Catel框架创建一个惰性属性。有办法吗?

当我在ViewModel中创建一个属性时,如下所示:

#region Photos property

/// <summary>
/// Gets or sets the Photos value.
/// </summary>
public FastObservableCollection<Photo> Photos
{
    get
    {
        var temp = GetValue<FastObservableCollection<Photo>>(PhotosProperty);
        if (temp == null)
            Photos = SelectedPatient.GetPhotos();
        return GetValue<FastObservableCollection<Photo>>(PhotosProperty);
    }
    set { SetValue(PhotosProperty, value); }
}

/// <summary>
/// Photos property data.
/// </summary>
public static readonly PropertyData PhotosProperty = RegisterProperty("Photos", typeof (FastObservableCollection<Photo>));

#endregion

即使没有绑定也会调用get函数,因此我的lazy属性在ViewModel初始化时初始化。

有办法吗?

1 个答案:

答案 0 :(得分:0)

实现&#34;懒惰属性&#34;只有一种方法,那就是使用Lazy&lt;&gt;类。这样做的原因是对于某些映射(例如视图模型到模型等),Catel直接使用SetValue而不是属性包装器(将Catel属性与依赖属性进行比较)。