Bagikan melalui


Cara: Mengonversi Data Terikat

Contoh ini menunjukkan cara menerapkan konversi ke data yang digunakan dalam pengikatan.

Untuk mengonversi data selama pengikatan, Anda harus membuat kelas yang mengimplementasikan IValueConverter antarmuka, yang mencakup Convert metode dan ConvertBack .

Contoh

Contoh berikut menunjukkan implementasi pengonversi tanggal yang mengonversi nilai tanggal yang diteruskan sehingga hanya menunjukkan tahun, bulan, dan hari. Saat menerapkan IValueConverter antarmuka, adalah praktik yang baik untuk menghias implementasi dengan ValueConversionAttribute atribut untuk menunjukkan alat pengembangan jenis data yang terlibat dalam konversi, seperti dalam contoh berikut:

[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

Setelah membuat pengonversi, Anda dapat menambahkannya sebagai sumber daya dalam file Extensible Application Markup Language (XAML). Dalam contoh berikut, src memetakan ke namespace layanan tempat DateConverter ditentukan.

<src:DateConverter x:Key="dateConverter"/>

Terakhir, Anda dapat menggunakan pengonversi dalam pengikatan Menggunakan sintaks berikut. Dalam contoh berikut, konten TextBlock teks terikat ke StartDate, yang merupakan properti sumber data eksternal.

<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}"/>

Sumber daya gaya yang dirujuk dalam contoh di atas ditentukan di bagian sumber daya yang tidak diperlihatkan dalam topik ini.

Baca juga