public static void ListenParentChange([NotNull] this View view) { Should.NotBeNull(view, "view"); if (view.Context == null) { return; } ParentObserver.Raise(view); if (ServiceProvider.AttachedValueProvider.GetValue <object>(view, VisitedParentPath, false) != null) { return; } ServiceProvider.AttachedValueProvider.SetValue(view, VisitedParentPath, view); var parent = BindingServiceProvider.VisualTreeManager.FindParent(view) as View; if (parent != null) { parent.ListenParentChange(); } var viewGroup = view as ViewGroup; if (viewGroup != null) { viewGroup.SetOnHierarchyChangeListener(GlobalViewParentListener.Instance); for (int i = 0; i < viewGroup.ChildCount; i++) { viewGroup.GetChildAt(i).ListenParentChange(); } } }
public static void ListenParentChange([CanBeNull] this View view) { if (!view.IsAlive()) { return; } ParentObserver.Raise(view); if (view.GetTag(Resource.Id.ListenParentChange) != null) { return; } view.SetTag(Resource.Id.ListenParentChange, GlobalViewParentListener.Instance); var parent = BindingServiceProvider.VisualTreeManager.FindParent(view) as View; if (parent != null) { parent.ListenParentChange(); } var viewGroup = view as ViewGroup; if (viewGroup != null) { if (!viewGroup.GetBindingMemberValue(AttachedMembers.ViewGroup.DisableHierarchyListener)) { viewGroup.SetOnHierarchyChangeListener(GlobalViewParentListener.Instance); } for (int i = 0; i < viewGroup.ChildCount; i++) { viewGroup.GetChildAt(i).ListenParentChange(); } } }
public virtual void ViewWillAppear(Action <bool> baseViewWillAppear, bool animated) { baseViewWillAppear(animated); var viewController = ViewController; if (viewController != null && !_isAppeared) { if (viewController.View != null) { ParentObserver.Raise(viewController.View, true); } UINavigationItem navigationItem = viewController.NavigationItem; if (navigationItem != null) { SetParent(navigationItem, viewController); SetParent(navigationItem.LeftBarButtonItem, viewController); SetParent(navigationItem.LeftBarButtonItems, viewController); SetParent(navigationItem.RightBarButtonItem, viewController); SetParent(navigationItem.RightBarButtonItems, viewController); } SetParent(viewController.EditButtonItem, viewController); SetParent(viewController.ToolbarItems, viewController); var dialogViewController = viewController as DialogViewController; if (dialogViewController != null) { SetParent(dialogViewController.Root, viewController); } var viewControllers = viewController.ChildViewControllers; foreach (var controller in viewControllers) { controller.TryRaiseAttachedEvent(AttachedMembers.Object.Parent); } var tabBarController = viewController as UITabBarController; if (tabBarController == null) { var splitViewController = viewController as UISplitViewController; viewControllers = splitViewController == null ? null : splitViewController.ViewControllers; } else { viewControllers = tabBarController.ViewControllers; } if (viewControllers != null) { foreach (var controller in viewControllers) { controller.TryRaiseAttachedEvent(AttachedMembers.Object.Parent); PlatformExtensions.SetHasState(controller, false); } } viewController.TryRaiseAttachedEvent(AttachedMembers.Object.Parent); _isAppeared = true; } Raise(ViewWillAppearHandler, animated); }
public void OnChildViewAdded(View parent, View child) { ParentObserver.Raise(child); var viewGroup = child as ViewGroup; if (viewGroup != null && !viewGroup.IsDisableHierarchyListener()) { viewGroup.SetOnHierarchyChangeListener(this); } }
public void OnChildViewAdded(View parent, View child) { ParentObserver.Raise(child); var viewGroup = child as ViewGroup; if (viewGroup != null && !viewGroup.GetBindingMemberValue(AttachedMembers.ViewGroup.DisableHierarchyListener)) { viewGroup.SetOnHierarchyChangeListener(this); } }
private static void RaiseParentChanged(UIView[] items) { if (items == null) { return; } for (int index = 0; index < items.Length; index++) { ParentObserver.Raise(items[index], true); } }
public void OnChildViewRemoved(View parent, View child) { var viewGroup = (ViewGroup)parent; if (viewGroup.ChildCount == 0 || viewGroup.GetChildAt(0) == child) { var underlyingView = GetUnderlyingView(child); if (underlyingView != null) { BindingServiceProvider.ContextManager.GetBindingContext(underlyingView).ValueChanged -= BindingContextChangedDelegate; } viewGroup.SetBindingMemberValue(AttachedMembers.ViewGroup.Content, RemoveViewValue); } ParentObserver.Raise(child); }
public virtual void ViewWillAppear(Action <bool> baseViewWillAppear, bool animated) { baseViewWillAppear(animated); if (_viewController.View != null) { ParentObserver.Raise(_viewController.View, true); } UINavigationItem navigationItem = _viewController.NavigationItem; if (navigationItem != null) { SetParent(navigationItem); SetParent(navigationItem.LeftBarButtonItem); SetParent(navigationItem.LeftBarButtonItems); SetParent(navigationItem.RightBarButtonItem); SetParent(navigationItem.RightBarButtonItems); } SetParent(_viewController.EditButtonItem); SetParent(_viewController.ToolbarItems); var dialogViewController = _viewController as DialogViewController; if (dialogViewController != null) { SetParent(dialogViewController.Root); } var viewControllers = ViewController.ChildViewControllers; foreach (var controller in viewControllers) { BindingExtensions.AttachedParentMember.Raise(controller, EventArgs.Empty); } var tabBarController = ViewController as UITabBarController; if (tabBarController != null) { viewControllers = tabBarController.ViewControllers; if (viewControllers != null) { foreach (var controller in viewControllers) { BindingExtensions.AttachedParentMember.Raise(controller, EventArgs.Empty); controller.RestorationIdentifier = string.Empty; } } } Raise(ViewWillAppearHandler, animated); }
protected override void InitializeView(IViewModel viewModel, IView view) { base.InitializeView(viewModel, view); if (view == null) { return; } var underlyingView = view.GetUnderlyingView(); var uiView = underlyingView as UIView; if (uiView != null) { ParentObserver.Raise(uiView, true); } var dialogViewController = underlyingView as DialogViewController; if (dialogViewController != null && dialogViewController.Root != null) { BindingExtensions.AttachedParentMember.SetValue(dialogViewController.Root, dialogViewController); } }
public void OnChildViewAdded(View parent, View child) { var viewGroup = (ViewGroup)parent; if (viewGroup.IndexOfChild(child) == 0) { var underlyingView = GetUnderlyingView(child); if (underlyingView != null) { var dataContext = BindingServiceProvider.ContextManager.GetBindingContext(underlyingView); dataContext.ValueChanged += BindingContextChangedDelegate; UpdataContext(viewGroup, underlyingView, dataContext); } } ParentObserver.Raise(child); var childViewGroup = child as ViewGroup; if (childViewGroup != null && !childViewGroup.GetBindingMemberValue(AttachedMembers.ViewGroup.DisableHierarchyListener)) { childViewGroup.SetOnHierarchyChangeListener(GlobalViewParentListener.Instance); } }
public static void RaiseParentChanged(this UIView uiView, bool recursively = true) { ParentObserver.Raise(uiView, recursively); }
public void OnChildViewRemoved(View parent, View child) { ParentObserver.Raise(child); }