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

728x90
반응형

■ IValueConverter 인터페이스 : 비트→전송 속도 문자열 변환자 사용하기

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

using System;

using System.Globalization;

using System.Windows.Data;

 

/// <summary>

/// 비트→전송 속도 문자열 변환자

/// </summary>

public class BitToTransferSpeedStringConverter : IValueConverter

{

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

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

 

    #region 변환하기 - Convert(sourceValue, targetType, parameter, cultureInfo)

 

    /// <summary>

    /// 변환하기

    /// </summary>

    /// <param name="sourceValue">소스 값</param>

    /// <param name="targetType">타겟 타입</param>

    /// <param name="parameter">매개 변수</param>

    /// <param name="cultureInfo">문화 정보</param>

    /// <returns>변환 값</returns>

    public object Convert(object sourceValue, Type targetType, object parameter, CultureInfo cultureInfo)

    {

        const double KILO_BIT = 1000;

        const double MEGA_BIT = 1000 * 1000;

        const double GIGA_BIT = 1000 * 1000 * 1000;

 

        double sourceValueDouble = System.Convert.ToDouble(sourceValue, CultureInfo.InvariantCulture);

 

        string suffix = "bits/s";

 

        double targetValueDouble = 0d;

 

        if(sourceValueDouble >= GIGA_BIT)

        {

            suffix = "Gbits/s";

 

            targetValueDouble = Math.Round(sourceValueDouble / GIGA_BIT, 2);

        }

        else if(sourceValueDouble >= MEGA_BIT)

        {

            suffix = "Mbits/s";

 

            targetValueDouble = Math.Round(sourceValueDouble / MEGA_BIT, 2);

        }

        else if(sourceValueDouble >= KILO_BIT)

        {

            suffix = "kbits/s";

 

            targetValueDouble = Math.Round(sourceValueDouble / KILO_BIT, 2);

        }

 

        return suffix == "b" ? $"{targetValueDouble:0} {suffix}" : $"{targetValueDouble:0.00} {suffix}";

    }

 

    #endregion

    #region 역변환하기 - ConvertBack(sourceValue, targetType, parameter, cultureInfo)

 

    /// <summary>

    /// 역변환하기

    /// </summary>

    /// <param name="sourceValue">소스 값</param>

    /// <param name="targetType">타겟 타입</param>

    /// <param name="parameter">매개 변수</param>

    /// <param name="cultureInfo">문화 정보</param>

    /// <returns>역변환 값</returns>

    public object ConvertBack(object sourceValue, Type targetType, object parameter, CultureInfo cultureInfo)

    {

        throw new NotImplementedException();

    }

 

    #endregion

}

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

728x90
반응형
Posted by 사용자 icodebroker

댓글을 달아 주세요