I have worked on both Functions in x:Bind (which is introduced in windows 10 build 14393) and IValueConverter to bind converted values to a property of an UI element. But, I would like to know which is right or efficient procedure to bind the values. What’s the difference in using them.
Example : You can use both Functions in x:Bind and IValueConverter to bind a string to ‘calendardatepicker’. But, which is efficient one?
1.Functions in x:Bind
//Xaml
<CalendarDatePicker Date="{x:Bind ConvertStringToDate(Date),Mode=OneWay}"></CalendarDatePicker>
//C#
public DateTimeOffset ConvertStringToDate(string date)
{
DateTime d;
d = System.Convert.ToDateTime(date);
d = DateTime.SpecifyKind(d, DateTimeKind.Local);
return (DateTimeOffset)d;
}
2.Using IValueConverter
//Xaml
<CalendarDatePicker Date="{x:Bind Date,Converter={StaticResource StringtoDate},Mode=OneWay}"></CalendarDatePicker>
//C#
public class DateToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, string language)
{
DateTime d = DateTime.Now;
string date = (string)value;
d = System.Convert.ToDateTime(date);
d = DateTime.SpecifyKind(d, DateTimeKind.Local);
return (DateTimeOffset)d;
}
public object ConvertBack(object value, Type targetType,
object parameter, string language)
{
//blah blah
}
}