File: System.Activities.Presentation\System\Activities\Presentation\Base\Core\Internal\PropertyEditing\Editors\SubPropertyViewEditor.cs
Project: ndp\cdf\src\NetFx40\Tools\System.Activities.Presentation.csproj (System.Activities.Presentation)
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//----------------------------------------------------------------
namespace System.Activities.Presentation.Internal.PropertyEditing.Editors 
{
    using System;
    using System.Windows;
    using System.Activities.Presentation.PropertyEditing;
    using System.Activities.Presentation.Internal.PropertyEditing.Resources;
 
    // <summary>
    // SubPropertyViewEditor is a "fake" value editor.  We only use it as a marker that exposes
    // MarkerSubPropertyTemplate as its editor DataTemplates.  The XAML code for PropertyContainer
    // specifically looks for these markers and it switches its InlineRowTemplate to a
    // sub-property-specific inline row template when found.
    // </summary>
    internal class SubPropertyViewEditor : ExtendedPropertyValueEditor 
    {
 
        private static SubPropertyViewEditor _instance;
 
        // This class can have a private ctor because we instantiate it through code,
        // not through XAML or attributes
        private SubPropertyViewEditor()
            : base(
            PropertyInspectorResources.GetResources()["MarkerSubPropertyTemplate"] as DataTemplate,
            PropertyInspectorResources.GetResources()["MarkerSubPropertyTemplate"] as DataTemplate)
        { 
        }
 
        // <summary>
        // Gets the static instance of this class
        // </summary>
        public static SubPropertyViewEditor Instance 
        {
            get {
                if (_instance == null)
                {
                    _instance = new SubPropertyViewEditor();
                }
 
                return _instance;
            }
        }
    }
}