Class containing weak events for a IView. This way it is safe to subscribe to events of a IView without causing memory leaks.
Пример #1
0
        /// <summary>
        /// Adds the view load state.
        /// </summary>
        /// <param name="viewLoadState">The view load state.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewLoadState" /> is <c>null</c>.</exception>
        public void AddView(IViewLoadState viewLoadState)
        {
            Argument.IsNotNull("viewLoadState", viewLoadState);

            var viewInfo = new WeakViewInfo(viewLoadState.View);

            viewInfo.Loaded   += OnViewInfoLoaded;
            viewInfo.Unloaded += OnViewInfoUnloaded;

            _views.Add(viewInfo);
        }
Пример #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ViewStack" /> class.
        /// </summary>
        /// <param name="view">The view.</param>
        /// <param name="isViewLoaded">if set to <c>true</c>, the view is loaded.</param>
        /// <param name="parentViewStack">The parent view stack. Can be <c>null</c> for root view stacks.</param>
        private ViewStack(IView view, bool isViewLoaded, ViewStack parentViewStack)
        {
            Argument.IsNotNull("view", view);

            _viewInfo           = new WeakViewInfo(view, isViewLoaded);
            _viewInfo.Loaded   += OnViewLoaded;
            _viewInfo.Unloaded += OnViewUnloaded;

            _parentViewStack = parentViewStack;
            if (parentViewStack != null)
            {
                _parentViewStack.ViewStackLoaded += OnParentViewStackLoaded;
            }
        }
Пример #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ViewStack" /> class.
        /// </summary>
        /// <param name="view">The view.</param>
        /// <param name="isViewLoaded">if set to <c>true</c>, the view is loaded.</param>
        /// <param name="parentViewStack">The parent view stack. Can be <c>null</c> for root view stacks.</param>
        private ViewStack(IView view, bool isViewLoaded, ViewStack parentViewStack)
        {
            Argument.IsNotNull("view", view);

            _viewInfo = new WeakViewInfo(view, isViewLoaded);
            _viewInfo.Loaded += OnViewLoaded;
            _viewInfo.Unloaded += OnViewUnloaded;

            _parentViewStack = parentViewStack;
            if (parentViewStack != null)
            {
                _parentViewStack.ViewStackLoaded += OnParentViewStackLoaded;
            }
        }
Пример #4
0
        /// <summary>
        /// Adds the view load state.
        /// </summary>
        /// <param name="viewLoadState">The view load state.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewLoadState" /> is <c>null</c>.</exception>
        public void AddView(IViewLoadState viewLoadState)
        {
            Argument.IsNotNull("viewLoadState", viewLoadState);

#if SILVERLIGHT
            var frameworkElement = viewLoadState.View as FrameworkElement;
            if (frameworkElement != null)
            {
                _uninitializedViews[frameworkElement] = new UninitializedViewInfo(viewLoadState);

                frameworkElement.Loaded += OnFrameworkElementLoaded;
            }
#else
            var viewInfo = new WeakViewInfo(viewLoadState.View);
            viewInfo.Loaded   += OnViewInfoLoaded;
            viewInfo.Unloaded += OnViewInfoUnloaded;

            _views.Add(viewInfo);
#endif
        }
Пример #5
0
        /// <summary>
        /// Adds the view load state.
        /// </summary>
        /// <param name="viewLoadState">The view load state.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewLoadState" /> is <c>null</c>.</exception>
        public void AddView(IViewLoadState viewLoadState)
        {
            Argument.IsNotNull("viewLoadState", viewLoadState);

#if SILVERLIGHT
            var frameworkElement = viewLoadState.View as FrameworkElement;
            if (frameworkElement != null)
            {
                _uninitializedViews[frameworkElement] = new UninitializedViewInfo(viewLoadState);

                frameworkElement.Loaded += OnFrameworkElementLoaded;
            }
#else
            var viewInfo = new WeakViewInfo(viewLoadState.View);
            viewInfo.Loaded += OnViewInfoLoaded;
            viewInfo.Unloaded += OnViewInfoUnloaded;

            _views.Add(viewInfo);
#endif
        }