internal void Update(LayerContentViewModel layerContent) { if (layerContent == null) { return; } if (!layerContent.IsSublayer) { _textView.SetTypeface(null, TypefaceStyle.Bold); } else { _textView.SetPadding(10, 0, 0, 0); _layerLegend.SetPadding(10, 0, 0, 0); _listView.SetPadding(10, 0, 0, 0); } _textView.Text = layerContent.LayerContent?.Name; _layerLegend.LayerContent = layerContent.LayerContent; if (layerContent.Sublayers != null) { _listView.Adapter = new LegendAdapter(Context, new List <LayerContentViewModel>(layerContent.Sublayers)); _listView.SetHeightBasedOnChildren(); } if (layerContent is INotifyPropertyChanged) { var inpc = layerContent as INotifyPropertyChanged; var listener = new Internal.WeakEventListener <INotifyPropertyChanged, object, PropertyChangedEventArgs>(inpc) { OnEventAction = (instance, source, eventArgs) => { Refresh(instance as LayerContentViewModel, eventArgs.PropertyName); }, OnDetachAction = (instance, weakEventListener) => instance.PropertyChanged -= weakEventListener.OnEvent }; inpc.PropertyChanged += listener.OnEvent; } }