programing

IValueConverter 인터페이스에서 ConvertBack 메서드는 어떤 용도로 사용됩니까?

javajsp 2023. 4. 14. 21:12

IValueConverter 인터페이스에서 ConvertBack 메서드는 어떤 용도로 사용됩니까?

의 용도는 무엇입니까?ConvertBack의 메서드IValueConverter인터페이스입니다.

언제 부르나요?

또는 의 호출 순서는 무엇입니까?Convert그리고.ConvertBack방법?

여기서 질문한 이유는 다음과 같습니다.코드 속성 하나를 TEXTBOX의 TEXT 속성에 바인드하여 사용하고 있습니다.convertor그 재산에 대해서요.첫 번째Convert메서드가 호출되고 변경 시TEXTTEXTBOX아무 일도 일어나지 않아...하지만 제가 이 양식을 닫자마자ConvertBack메서드가 호출됩니다.

IMO,ConvertBack메소드는 데이터의 시각적 표현을 특정 DataType으로 변환하는 데 사용됩니다.

예를 들어 Converter를 사용하여 부울을 변환합니다.true현악기에 맞추어"TrueBoolean"이 텍스트는 TextBox에 표시됩니다.TextBox 값을 변경하면ConvertBack바인딩이 다시 시작되자마자 메서드가 호출됩니다(기본값 OnFocusLost).이제 당신의ConvertBack메서드는 새 값을 원하는 데이터 유형으로 변환하려고 합니다.따라서 로직을 구현하여 변환해야 합니다."FalseBoolean"로.false.

public class Converter : IValueConverter
{
    object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (bool) value ? "TrueBoolean" : "FalseBoolean";
    }

    object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var s = (string) value;
        if (s.Equals("TrueBoolean",StringComparison.CurrentCultureIgnoreCase))
            return true;
        if (s.Equals("FalseBoolean", StringComparison.CurrentCultureIgnoreCase))
            return false;
        throw new Exception(string.Format("Cannot convert, unknown value {0}", value));
    }
}

이 기술은 DataGrids에서 많이 사용되고 있습니다.

이게 좀 명확했으면 좋겠는데...

갱신하다
코멘트의 질문에 대해서:
기본값을 덮어쓰려면OnFocusLost바인딩 동작은 다음과 같이 바인딩을 변경해야 합니다.

<TextBox Text="{Binding MyText, UpdateSourceTrigger=PropertyChanged}"/>
<!--syntax might differ, can't access VS at the moment.-->

ConvertBack그 때,mode=TwoWay제본할 수 있습니다

사용자 입력을 바인딩된 데이터 유형으로 다시 변환하고 이 경우TextBox초점을 잃다

예를 들어(이것이 기본 제공되지 않은 경우) 가격을 나타내는 번호가 있는 경우Convertmethod는 값을 올바른 통화 기호, 소수 구분 기호 등의 문자열로 포맷합니다.

사용자가 가능한 통화 기호, 수천 구분 기호 등 새로운 값을 입력할 경우사용하다ConvertBackmethod를 사용하여 문자열을 해석하고 숫자 값을 추출합니다.

또 다른 예로는 신용카드 번호 입력을 들 수 있습니다.사용자는 숫자를 단일 숫자 문자열 또는 공백 또는 대시로 구분된 숫자 그룹으로 입력할 수 있습니다.ConvertBackmethod는 가능한 모든 입력을 받아 필요한 단일 형식으로 변환합니다.

바인딩의 UpdateSourceTrigger 속성을 확인합니다.http://msdn.microsoft.com/library/system.windows.data.binding.updatesourcetrigger.aspx

텍스트 상자는 포커스가 흐트러지면 기본적으로 소스를 업데이트합니다.UpdateSourceTrigger를 사용하면 텍스트 상자의 내용이 변경되면 이 동작을 즉시 소스 업데이트로 설정할 수 있습니다.

HTH 도미니크

언급URL : https://stackoverflow.com/questions/6424074/what-is-the-use-of-convertback-method-in-ivalueconverter-interface