Nasıl yapılır: Bağımlı Veri Dönüştürme
Bu örnekte, bağlamalarda kullanılan verilere dönüştürmenin nasıl uygulanacakları gösterir.
Bağlama sırasında verileri dönüştürmek için ve yöntemlerini içeren arabirimini IValueConverter uygulayan bir sınıf Convert oluşturmanız ConvertBack gerekir.
Örnek
Aşağıdaki örnek, geçirilen tarih değerini yalnızca yılı, ayı ve günü gösteren tarih dönüştürücünün uygulamasını gösterir. Arabirimini uygulamak için, aşağıdaki örnekte olduğu gibi, uygulamanın geliştirme araçlarına dönüştürmede yer alan veri türlerini belirtmek için bir özniteliğiyle dekore etmek IValueConverterValueConversionAttribute iyi bir uygulamadır:
[ValueConversion(typeof(DateTime), typeof(String))]
public class DateConverter : 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;
}
}
Public Class DateConverter
Implements System.Windows.Data.IValueConverter
Public Function Convert(ByVal value As Object,
ByVal targetType As System.Type,
ByVal parameter As Object,
ByVal culture As System.Globalization.CultureInfo) _
As Object Implements System.Windows.Data.IValueConverter.Convert
Dim DateValue As DateTime = CType(value, DateTime)
Return DateValue.ToShortDateString
End Function
Public Function ConvertBack(ByVal value As Object,
ByVal targetType As System.Type,
ByVal parameter As Object,
ByVal culture As System.Globalization.CultureInfo) _
As Object Implements System.Windows.Data.IValueConverter.ConvertBack
Dim strValue As String = value
Dim resultDateTime As DateTime
If DateTime.TryParse(strValue, resultDateTime) Then
Return resultDateTime
End If
Return DependencyProperty.UnsetValue
End Function
End Class
Bir dönüştürücü oluşturduktan sonra, bu dönüştürücüyü Extensible Application Markup Language (XAML) dosyanıza kaynak olarak ebilirsiniz. Aşağıdaki örnekte src,DateConverter'ın tanımlandığı ad alanına eşler.
<src:DateConverter x:Key="dateConverter"/>
Son olarak, aşağıdaki söz dizimini kullanarak bağlamada dönüştürücüyü kullanabilirsiniz. Aşağıdaki örnekte, metin içeriği bir dış TextBlock veri kaynağının özelliği olan TextBlockbağlanmaktadır.
<TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,8,0"
Name="startDateTitle"
Style="{StaticResource smallTitleStyle}">Start Date:</TextBlock>
<TextBlock Name="StartDateDTKey" Grid.Row="2" Grid.Column="1"
Text="{Binding Path=StartDate, Converter={StaticResource dateConverter}}"
Style="{StaticResource textStyleTextBlock}"/>
Yukarıdaki örnekte başvurulan stil kaynakları, bu konuda gösterilmez bir kaynak bölümünde tanımlanmıştır.