Мне нужен совет о том, как обрабатывать вычисленные свойства в сценарии Xamarin.Forms с Realm.
У меня есть проект Xamarin.Forms с Realm. В одном из классов моего домена (унаследованном от RealmObject) у меня определены свойства StartTime и EndTime.
public class Activity : RealmObject {
public DateTimeOffset StartTime { get; set; }
public DateTimeOffset EndTime { get; set; }
...
Затем я связываю список Activity в моей модели представления с CollectionView в моем представлении xaml
<DataTemplate x:DataType="models:Activity”>
<Label Text="{Binding StartTime}" …
<Label Text="{Binding EndTime}" ...
Пока все хорошо. Когда я позже изменю StartTime и EndTimes в моем списке «Активность», эти изменения будут автоматически отражены / обновлены в моем представлении.
Теперь к моей проблеме. У меня также есть вычисляемое свойство в моем объекте Activity:
public TimeSpan Length
{ get{ return EndTime.TimeOfDay - StartTime.TimeOfDay;} }
Я знаю, что Realm не будет обрабатывать это свойство, поскольку у него есть собственный метод получения. Я думаю, что Realm просто игнорирует это свойство и не вызывает события OnPropertyChanged и т. Д.
Я хотел бы также связать значение этого свойства в моем CollectionView, например: <Label Text="{Binding Length}" …
Каждый раз, когда StartTime или EndTime изменяются для Activity, я также хотел бы, чтобы эта привязка Length автоматически отображала обновления в моем представлении.
Вначале я думал, что в установщиках StartTime / EndTime манипулировать Length как хорошо, но я не могу создать пользовательские установщики для StartTime / EndTime, так как это заставит Realm игнорировать мои свойства StartTime / EndTime.
Какой хороший способ справиться с этим?