'宣言 Public Property ValueToTextConverter As IValueConverter
public IValueConverter ValueToTextConverter {get; set;}
'string' と ValueType の間の変換はデフォルトで内蔵の変換ロジックを使用して実行されます。ValueToDisplayTextConverter および ValueToTextConverter を設定して変換ロジックをオーバーライドできます。エディターが編集モードの時は ValueToTextConverter が使用されますが、エディターが編集モードではない時は ValueToDisplayTextConverter が使用されます。
注: エディターは、'string' 以外のタイプの値を編集できます。例えば、XamTextEditor は DateTime のタイプの値を編集できます。ValueType プロパティを使用してエディターが編集する値のタイプを指定できます。.
デフォルトのビルトイン変換ロジックはほとんどの場合で十分ですが、ユーザー入力を値タイプ オブジェクトに変換するためにカスタム ロジックを提供するには、この機能を使用します。内蔵の変換ロジックがどのようにテキストをカスタム オブジェクト タイプに変換したらよいかが分からないカスタム オブジェクトを編集する場合に値の特定の側面を表すテキストで特定の文字の入力をサポートしたい場合、たとえば、'2k' の 'k' を 1000 に解釈させたい場合や、DateTime の編集時に明日の日付として +1d を解釈させたい場合などです。
注: 派生したエディターは ValueToTextConverter をサポートしないか、使用しない可能性があります。値およびテキストが選択された項目から取得される XamComboEditor などの値からテキストへの変換が本質的に実行されるエディターの場合、ValueToTextConverter をサポートしません。
public class MyPointConverter : IValueConverter { // Convert gets called to convert value to text. public object Convert( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture ) { ValueEditor editor = parameter as ValueEditor; if ( value is Point && targetType == typeof( string ) ) value.ToString( ); return Infragistics.Windows.Utilities.ConvertDataValue( value, targetType, editor.FormatProvider, editor.Format ); } // ConvertBack gets called to convert user input into to value. public object ConvertBack( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture ) { string text = null != value ? value.ToString( ) : string.Empty; return Point.Parse( text ); } }
Public Class MyPointConverter Implements IValueConverter ' Convert gets called to convert value to text. Public Function Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert Dim editor As ValueEditor = DirectCast(parameter, ValueEditor) If TypeOf value Is Point AndAlso targetType Is GetType(String) Then value.ToString() End If Return Infragistics.Windows.Utilities.ConvertDataValue(value, targetType, editor.FormatProvider, editor.Format) End Function ' ConvertBack gets called to convert user input into to value. Public Function ConvertBack(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack Dim text As String = String.Empty If Not Nothing Is value Then text = value.ToString() End If Return Point.Parse(text) End Function End Class