我试图用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初始化时初始化。
有办法吗?
答案 0 :(得分:0)
实现&#34;懒惰属性&#34;只有一种方法,那就是使用Lazy&lt;&gt;类。这样做的原因是对于某些映射(例如视图模型到模型等),Catel直接使用SetValue而不是属性包装器(将Catel属性与依赖属性进行比较)。