コード例 #1
0
        private static void HandleDisplay(FragmentContentViewer viewer, ViewModelFragment oldValue, ViewModelFragment newValue)
        {
            if (oldValue != null)
            {
                oldValue.Dispose();
            }

            if (newValue != null)
            {
                var viewType = FragmentManager.ResolveFragmentView(newValue.GetType());

                if (viewType != null)
                {
                    var view = Activator.CreateInstance(viewType) as FrameworkElement;

                    var newFragment = newValue as ViewModelFragment;

                    view.DataContext = newFragment;
                    newFragment.UI.SetUIElement(view, viewer);

                    viewer.PART_ContentPresenter.Content = view;

                    if (viewer.AutoInvoke)
                    {
                        newFragment.Invoke(viewer.DataContext as ViewModelBase, viewer.InvokeParameter);
                    }
                }
            }
            else
            {
                viewer.PART_ContentPresenter.Content = null;
            }
        }
コード例 #2
0
        public static void SetHandleVisibilityChange(DependencyObject element, bool value)
        {
            element.SetValue(HandleVisibilityChangeProperty, value);

            Grid control = element as Grid;
            ViewModelFragment fragment = control.DataContext as ViewModelFragment;

            if (value)
            {
                var key = element.RegisterPropertyChangedCallback(UIElement.VisibilityProperty, new DependencyPropertyChangedCallback((DependencyObject cont, DependencyProperty proper) =>
                {
                    fragment.OnVisibilityChanged((Visibility)cont.GetValue(proper), null);
                }));

                element.SetValue(HandleVisibilityChange_HandlerProperty, key);
            }
            else
            {
                var key = (long)element.GetValue(HandleVisibilityChange_HandlerProperty);
                element.UnregisterPropertyChangedCallback(UIElement.VisibilityProperty, key);
            }
        }