コード例 #1
0
        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;
            }
        }