protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (BackgroundImage != null)
                {
                    BackgroundImage = null;
                }

                _LeftFixedSpace.Dispose();
                _RightFixedSpace.Dispose();

                var source = TableView.Source as ViewSource;
                if (source != null)
                {
                    foreach (var section in source.Sections.Values)
                    {
                        foreach (var listSource in section.ListSources.Values)
                        {
                            if (listSource != null)
                            {
                                listSource.Dispose();
                            }
                        }
                    }

                    source.Dispose();
                }

                if (_TableView != null)
                {
                    _TableView.Dispose();
                    _TableView = null;
                }

                if (_Searchbar != null)
                {
                    _Searchbar.Dispose();
                    _Searchbar = null;
                }

                if (RootView != null)
                {
                    var disposable = RootView as IDisposable;
                    if (disposable != null)
                    {
                        disposable.Dispose();
                        RootView = null;
                    }
                }

                if (ToolbarButtons != null)
                {
                    foreach (var button in ToolbarButtons)
                    {
                        button.Dispose();
                    }
                }

                if (NavbarButtons != null)
                {
                    foreach (var button in NavbarButtons)
                    {
                        button.Dispose();
                    }
                }

                Theme.Dispose();
                Theme = null;
            }

            base.Dispose(disposing);
        }