Вычисляемые свойства в привязке данных MVVM Realm и Xamarin.Forms - PullRequest
0 голосов
/ 03 марта 2020

Мне нужен совет о том, как обрабатывать вычисленные свойства в сценарии 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.

Какой хороший способ справиться с этим?

...