private void InitSelectedIndexChangedAction(IBaseView currentView, IBaseView nextView)
        {
            var filterProperty = BaseComplexView.GetFilterProperty(nextView as UIElement);
            var childViewModel = nextView.ViewModel;
            var headerFilter   = childViewModel.HeaderFilters.First(p => p.PropertyName == filterProperty);

            headerFilter.DisableChangedAction(p => { p.IsUsed = true; p.FilterValue = 0; });

            currentView.ViewModel.ActionSelectedValueChanged = (selectedValue) =>
            {
                OnSelectedIndexChanged(currentView, nextView, selectedValue);
            };
        }
        private void InitView()
        {
            if (_isDesignTime == true)
            {
                return;
            }

            var panel = Content as Panel;

            var _views = new Dictionary <int, IBaseView>();

            foreach (UIElement item in panel.Children)
            {
                var level = BaseComplexView.GetViewLevel(item);
                var view  = item as IBaseView;
                if (view != null && _views.ContainsKey(level) == false)
                {
                    _views.Add(level, view);
                }
            }

            if (_views.Count == 0)
            {
                return;
            }

            var viewList = new List <IBaseView>(_views.Count + 2);

            viewList.Add(_views[_views.Count - 1]);
            for (int i = 0; i < _views.Count; i++)
            {
                viewList.Add(_views[i]);
            }
            viewList.Add(_views[0]);

            for (int i = 1; i < viewList.Count - 1; i++)
            {
                var previousView = viewList[i - 1];
                var currentView  = viewList[i];
                var nextView     = viewList[i + 1];

                if (i < viewList.Count - 2)
                {
                    InitSelectedIndexChangedAction(currentView, nextView);
                }
                InitMoveFocusAction(currentView, nextView);
                InitAfterSave(previousView, currentView, nextView);
                InitAfterLoad(previousView, currentView, nextView);
            }
        }
        protected virtual void OnSelectedIndexChanged(IBaseView currentView, IBaseView nextView, object selectedValue)
        {
            Logger.Instance.Debug("BaseComplexView OnSelectedIndexChanged " + currentView.GetType().Name, Logger.Categories.UI);
            var viewModel      = currentView.ViewModel;
            var childViewModel = nextView.ViewModel;
            var filterProperty = BaseComplexView.GetFilterProperty(nextView as UIElement);
            var headerFilter   = childViewModel.HeaderFilters.First(p => p.PropertyName == filterProperty);

            childViewModel.ParentItem = viewModel.GetSelectedItem();
            if (selectedValue == null)
            {
                headerFilter.FilterValue = 0;
            }
            else
            {
                headerFilter.FilterValue = selectedValue;
            }
        }