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; } }