Postupy: Převod připojených dat

Tento příklad ukazuje, jak použít převod na data, která se používají ve vazbách.

Chcete-li převést data během vazby, musíte vytvořit třídu, která implementuje IValueConverter rozhraní, která zahrnuje Convert a ConvertBack metody.

Příklad

Následující příklad ukazuje implementaci převaděče kalendářních dat, který převede hodnotu data předanou tak, aby zobrazovala pouze rok, měsíc a den. Při implementaci IValueConverter rozhraní je vhodné vyzdobit implementaci atributem ValueConversionAttribute , který indikuje vývojovým nástrojům datové typy zahrnuté do převodu, jak je znázorněno v následujícím příkladu:

[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

Po vytvoření převaděče ho můžete přidat jako prostředek do souboru XAML (Extensible Application Markup Language). V následujícím příkladu se src mapuje na obor názvů, ve kterém je definován DateConverter.

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

Nakonec můžete ve své vazbě použít převaděč pomocí následující syntaxe. V následujícím příkladu je textový obsah TextBlock vázán na StartDate, což je vlastnost externího zdroje dat.

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

Prostředky stylu, na které odkazuje výše uvedený příklad, jsou definovány v oddílu prostředků, který se v tomto tématu nezobrazuje.

Viz také