IValueConverter
Interface
public interface IValueConverter
The IValueConverter type exposes the following members.
Methods
Convert à Converts a value
ConvertBack à Converts a value.
Remarks
If you want to associate
a value converter with a binding, create a class that implements the IValueConverter interface and then implement the Convert and ConvertBackmethods. Converters can change data from one type to another,
translate data based on cultural information, or modify other aspects of the
presentation. For examples of some typical converter scenarios, see "Data
Conversion" in Data Binding Overview.
Value converters are culture-aware. Both the Convert and ConvertBack methods have a culture parameter that indicates the cultural information. If cultural
information is irrelevant to the conversion, then you can ignore that parameter
in your custom converter.
The Convert and ConvertBack methods also have a
parameter called parameter so that you can use the same instance of the converter with
different parameters. For example, you can write a formatting converter that
produces different formats of data based on the input parameter that you use.
You can use the ConverterParameter of the Binding class to pass a
parameter as an argument into the Convert and ConvertBack methods.
Examples
This example shows how
to apply conversion to data that is used in bindings.
To convert data during binding, you must create
a class that implements the IValueConverter interface, which includes the Convert and ConvertBack methods.
The following example shows the implementation
of a date converter that converts the date value passed in so that it only
shows the year, the month, and the day. When implementing the IValueConverter interface, it is a good practice to decorate the
implementation with a ValueConversionAttribute attribute to indicate to development tools the data types involved
in the conversion,.
as in the following example:
[ValueConversion(typeof(DateTime), typeof(String))]
public class DateConverterclass : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
DateTime date = (DateTime)value;
return date.ToShortDateString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string strValue = value as string;
DateTime resultDateTime;
if (DateTime.TryParse(strValue, out resultDateTime))
{
return resultDateTime;
}
return DependencyProperty.UnsetValue;
}
}
Once you have created a
converter, you can add it as a resource in your Extensible Application Markup
Language (XAML) file. In the following example, src maps to the namespace in which DateConverter is defined.
XAML:
<src:DateConverterclass x:Key="dateConverter"/>
Finally, you can use the
converter in your binding using the following syntax. In the following example,
the text content of the TextBlock is bound to StartDate, which is a property of an external data
source.
XAML:
<TextBlock Grid.Row="0" Grid.Column="0" Margin="0,0,8,0"
Name="startDateTitle"
Style="{StaticResource smallTitleStyle}">Start Date:</TextBlock>
<TextBlock Name="StartDateDTKey" Grid.Row="0" Grid.Column="0"
Text="{Binding Path=StartDate, Converter={StaticResource dateConverter}}"
Style="{StaticResource textStyleTextBlock}"/>
No comments:
Post a Comment