File: System\Activities\Core\Presentation\SwitchTryCatchDesignerHelper.cs
Project: ndp\cdf\src\NetFx40\Tools\System.Activities.Core.Presentation\System.Activities.Core.Presentation.csproj (System.Activities.Core.Presentation)
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//----------------------------------------------------------------
namespace System.Activities.Core.Presentation
{
    using System.Activities.Presentation;
    using System.Activities.Presentation.Model;
    using System.Activities.Presentation.View;
 
    static class SwitchTryCatchDesignerHelper
    {
        public static void MakeRootDesigner(WorkflowViewElement wve)
        {
            DesignerView designerView = wve.Context.Services.GetService<DesignerView>();
            if (!wve.Equals(designerView.RootDesigner))
            {
                designerView.MakeRootDesigner(wve.ModelItem);
            }
        }
 
        public static void MakeParentRootDesigner<TParentType>(WorkflowViewElement wve)
            where TParentType : WorkflowViewElement
        {
            WorkflowViewElement view = FindParentDesigner<TParentType>(wve);
            if (view != null)
            {
                MakeRootDesigner(view);
            }
        }
 
        static TParentType FindParentDesigner<TParentType>(WorkflowViewElement wve) 
            where TParentType : WorkflowViewElement
        {
            ModelItem parent = wve.ModelItem.Parent;
            while (parent != null)
            {
                if (parent.View != null && parent.View is TParentType)
                {
                    return (TParentType)parent.View;
                }
                parent = parent.Parent;
            }
            return null;
        }
    }
}