첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ TextEdit 클래스 : 커스텀 텍스트 에디터 사용하기

----------------------------------------------------------------------------------------------------

CustomTextEdit.cs

 

 

using System.Windows;

 

using DevExpress.Xpf.Editors;

 

namespace HowToCreateCustomTextEdit

{

    /// <summary>

    /// 커스텀 텍스트 에디터

    /// </summary>

    public class CustomTextEdit : TextEdit

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Public

 

        #region Field

 

        /// <summary>

        /// 디폴트 에디터 여부 속성

        /// </summary>

        public static readonly DependencyProperty IsDefaultEditorProperty;

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 디폴트 에디터 여부 - IsDefaultEditor

 

        /// <summary>

        /// 디폴트 에디터 여부

        /// </summary>

        public bool IsDefaultEditor

        {

            get

            {

                return (bool)GetValue(IsDefaultEditorProperty);

            }

            set

            {

                SetValue(IsDefaultEditorProperty, value);

            }

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Static

 

        #region 생성자 - CustomTextEdit()

 

        /// <summary>

        /// 생성자

        /// </summary>

        static CustomTextEdit()

        {

            IsDefaultEditorProperty = DependencyProperty.Register("IsDefaultEditor", typeof(bool), typeof(CustomTextEdit));

 

            CustomTextEditSettings.RegisterCustomEdit();

        }

 

        #endregion

 

        ////////////////////////////////////////////////////////////////////////////////////////// Instance

        //////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - CustomTextEdit()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public CustomTextEdit()

        {

        }

 

        #endregion

    }

}

 

 

CustomTextEditSettings.cs

 

 

using System.Windows;

 

using DevExpress.Xpf.Editors;

using DevExpress.Xpf.Editors.Helpers;

using DevExpress.Xpf.Editors.Settings;

 

namespace HowToCreateCustomTextEdit

{

    /// <summary>

    /// 커스텀 텍스트 에디터 설정

    /// </summary>

    public class CustomTextEditSettings : TextEditSettings

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Public

 

        #region Field

 

        /// <summary>

        /// 디폴트 에디터 여부 속성

        /// </summary>

        public static readonly DependencyProperty IsDefaultEditorProperty;

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 디폴트 에디터 여부 - IsDefaultEditor

 

        /// <summary>

        /// 디폴트 에디터 여부

        /// </summary>

        public bool IsDefaultEditor

        {

            get

            {

                return (bool)GetValue(IsDefaultEditorProperty);

            }

            set

            {

                SetValue(IsDefaultEditorProperty, value);

            }

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Static

 

        #region 생성자 - CustomTextEditSettings()

 

        /// <summary>

        /// 생성자

        /// </summary>

        static CustomTextEditSettings()

        {

            IsDefaultEditorProperty = DependencyProperty.Register("IsDefaultEditor", typeof(bool), typeof(CustomTextEditSettings));

 

            RegisterCustomEdit();

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Public

 

        #region 커스텀 에디터 등록하기 - RegisterCustomEdit()

 

        /// <summary>

        /// 커스텀 에디터 등록하기

        /// </summary>

        public static void RegisterCustomEdit()

        {

            EditorSettingsProvider.Default.RegisterUserEditor

            (

                typeof(CustomTextEdit),

                typeof(CustomTextEditSettings),

                () => new CustomTextEdit(),

                () => new CustomTextEditSettings()

            );

        }

 

        #endregion

 

        ////////////////////////////////////////////////////////////////////////////////////////// Instance

        //////////////////////////////////////////////////////////////////////////////// Protected

 

        #region 에디터 코어 할당하기 - AssignToEditCore(baseEdit)

 

        /// <summary>

        /// 에디터 코어 할당하기

        /// </summary>

        /// <param name="baseEdit">IBaseEdit 객체</param>

        protected override void AssignToEditCore(IBaseEdit baseEdit)

        {

            base.AssignToEditCore(baseEdit);

 

            CustomTextEdit customTextEdit = baseEdit as CustomTextEdit;

 

            if(customTextEdit == null)

            {

                return;

            }

 

            SetValueFromSettings(IsDefaultEditorProperty, () => customTextEdit.IsDefaultEditor = IsDefaultEditor);

        }

 

        #endregion

    }

}

 

----------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요