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

■ ListBoxItem 클래스 : 색상 리스트 박스 항목 만들기

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

using System;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Media;

using System.Windows.Shapes;

 

/// <summary>

/// 색상 리스트 박스 항목

/// </summary>

public class ColorListBoxItem : ListBoxItem

{

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

    ////////////////////////////////////////////////////////////////////////////////////////// Private

 

    #region Field

 

    /// <summary>

    /// 텍스트

    /// </summary>

    private string text;

 

    /// <summary>

    /// 사각형

    /// </summary>

    private Rectangle rectangle;

 

    /// <summary>

    /// 텍스트 블럭

    /// </summary>

    private TextBlock textBlock;

 

    #endregion

 

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

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

 

    #region 텍스트 - Text

 

    /// <summary>

    /// 텍스트

    /// </summary>

    public string Text

    {

        set

        {

            this.text = value;

 

            string result = this.text[0].ToString();

 

            for(int i = 1; i < this.text.Length; i++)

            {

                result += (char.IsUpper(this.text[i]) ? " " : "") + this.text[i].ToString();

            }

 

            this.textBlock.Text = result;

        }

        get

        {

            return this.text;

        }

    }

 

    #endregion

 

    #region 색상 - Color

 

    /// <summary>

    /// 색상

    /// </summary>

    public Color Color

    {

        set

        {

            this.rectangle.Fill = new SolidColorBrush(value);

        }

        get

        {

            SolidColorBrush solidColorBrush = this.rectangle.Fill as SolidColorBrush;

 

            return solidColorBrush == null ? Colors.Transparent : solidColorBrush.Color;

        }

    }

 

    #endregion

 

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

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

 

    #region 생성자 - ColorListBoxItem()

 

    /// <summary>

    /// 생성자

    /// </summary>

    public ColorListBoxItem()

    {

        StackPanel stackPanel = new StackPanel();

 

        stackPanel.Orientation = Orientation.Horizontal;

 

        Content = stackPanel;

 

        this.rectangle = new Rectangle();

 

        this.rectangle.Width  = 16;

        this.rectangle.Height = 16;

        this.rectangle.Margin = new Thickness(2);

        this.rectangle.Stroke = SystemColors.WindowTextBrush;

 

        stackPanel.Children.Add(this.rectangle);

 

        this.textBlock = new TextBlock();

 

        this.textBlock.VerticalAlignment = VerticalAlignment.Center;

        this.textBlock.Margin            = new Thickness(2, 0, 0, 0);

 

        stackPanel.Children.Add(this.textBlock);

    }

 

    #endregion

 

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

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

 

    #region 문자열 구하기 - ToString()

 

    /// <summary>

    /// 문자열 구하기

    /// </summary>

    /// <returns></returns>

    public override string ToString()

    {

        return this.text;

    }

 

    #endregion

 

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

 

    #region 선택시 처리하기 - OnSelected(e)

 

    /// <summary>

    /// 선택시 처리하기

    /// </summary>

    /// <param name="e">이벤트 인자</param>

    protected override void OnSelected(RoutedEventArgs e)

    {

        base.OnSelected(e);

 

        this.textBlock.FontWeight = FontWeights.Bold;

    }

 

    #endregion

 

    #region 선택 해제시 처리하기 - OnUnselected(e)

 

    /// <summary>

    /// 선택 해제시 처리하기

    /// </summary>

    /// <param name="e">이벤트 인자</param>

    protected override void OnUnselected(RoutedEventArgs e)

    {

        base.OnUnselected(e);

 

        this.textBlock.FontWeight = FontWeights.Regular;

    }

 

    #endregion

}

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

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요