Silverlight에서 바인딩을 사용하고 있습니다. TextBox를 Decimal 엔터티로 바인딩했습니다. 다음은 바인딩의 코드 스 니펫입니다.Silverlight의 Decimal Converter가 Lost Focus에서 올바르게 작동하지 않습니다.
<TextBox x:Name="AmountBox" Text="{Binding SelectedEntity.Amount,Mode=TwoWay,StringFormat=\{0:n2\},Converter={StaticResource DecimalBlankValueConverter}}" Validate="True" TextChanged="AmountBox_TextChanged" LostFocus="AmountBox_LostFocus"/>
아래 코드는 변환기 코드입니다. 손실 초점
decimal result;
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (!Decimal.TryParse(value.ToString(),out result) || (decimal)value == decimal.Zero)
return null;
return decimal.Parse(value.ToString());
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null || !Decimal.TryParse(value.ToString(), out result))
return 0.00;
return decimal.Parse(value.ToString());
}
나는 GetBindingExpression (TextBox.TextProperty) .UpdateSource()와 소스 를 업데이트하고;
모든 것이 잘 처리되지만 초점이 손실되면 convert가 호출되지 않고 텍스트 상자에 문자열을 입력 할 때 convert가 호출되지 않고 textBox 텍스트가 비어있게 변환되지 않습니다.
누구든지 제게 제안 해주십시오. 코드에있는 문제는 무엇입니까? 사전에
감사합니다. ---- 주권
고마워 ... \t 나는 TextBox에 문자열을 입력 할 때 Bindings가 예외를 제공한다고 생각하는데, Decimal Value에 바인딩합니다. 따라서 변환기는 호출되지 않습니다. –
@ user1173233, 예외가 없어야합니다. 출력 창에서이를 확인할 수 있습니다. 'ConvertBack' 메쏘드는'TextBox'에 값을 입력 한 후에 호출되고 Decimal을 반환합니다. – Zabavsky
고마워요. 내가 옳다고 생각하지만, 왜 변환이 불려지는지 모르겠다. –