■ DependencyObject 클래스를 상속하고 의존 속성을 추가해 데이터 소스 객체 만들기

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


ClockTicker.cs

 

 

using System;
using System.Windows;
using System.Windows.Threading;

/// <summary>
///
시계 틱 발생자
/// </summary>
public class ClockTicker : DependencyObject
{
    
///////////////////////////////////////////////////////////////a///////////////////////////////////// Field
    ////////////////////////////////////////////////////////////////////////////////////////// Static

    #region Field

    
/// <summary>
    /// 일시 속성
    /// </summary>
    public static DependencyProperty DateTimeProperty = DependencyProperty.Register
    (
        
"DateTime",
        
typeof(DateTime),
        
typeof(ClockTicker)
    );

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Property
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 일시 - DateTime

    
/// <summary>
    /// 일시
    /// </summary>
    public DateTime DateTime
    {
        
set
        {
            SetValue(DateTimeProperty,
value);
        }
        
get
        {
            
return (DateTime)GetValue(DateTimeProperty);
        }
    }

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 생성자 - ClockTicker()

    
/// <summary>
    /// 생성자
    /// </summary>
    public ClockTicker()
    {
        
DispatcherTimer dispatcherTimer = new DispatcherTimer();

        dispatcherTimer.Tick += dispatcherTimer_Tick;

        dispatcherTimer.Interval =
TimeSpan.FromSeconds(1);
        dispatcherTimer.Start();
    }

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 디스패처 타이머 틱 처리하기 - dispatcherTimer_Tick(sender, e)

    
/// <summary>
    /// 디스패처 타이머 틱 처리하기
    /// </summary>
    /// <param name="sender">이벤트 발생자</param>
    /// <param name="e">이벤트 인자</param>
    private void dispatcherTimer_Tick(object sender, EventArgs e)
    {
        DateTime =
DateTime.Now;
    }

    #endregion
}

 

 

MainWindow.xaml


<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:src="clr-namespace:TestProject"
    SizeToContent="WidthAndHeight"
    ResizeMode="CanMinimize"
    FontFamily="Bookman Old Style"
    FontSize="36pt"
    Title="디지털 시계">
    <Window.Resources>
        <src:ClockTicker x:Key="ClockTickerKey" />
    </Window.Resources>
    <Window.Content>
        <Binding
            Source="{StaticResource ClockTickerKey}"
            Path="DateTime" />
    </Window.Content>
</
Window>

 

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

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요