UWP Xbinding сбой с конвертерами

Я должен конвертеры, чтобы использовать с Texblocks и слайдер в приложении UWP. При использовании Binding все работает нормально, но после изменения на x:Bind конвертер перестает работать. Свойства обновляются корректно, и если я удаляю Конвертер (из текстовых полей), я вижу, что значения обновляются (но без правильного формата).

Возможно, кто-то может помочь мне изменить код конвертера, чтобы он был совместим с x:Bind (я уже пробовал, но не могу найти решение).

Свойства:

Position = TimeSpan
Duration = TimeSpan
Duration.TotalSeconds = double

Элемент управления Slider нуждается в преобразовании положения в удвоение. Элемент управления Textblock нуждается в преобразовании позиции в строку с правильным форматом.

XAML код Ползунок управления

<Slider Name="PositionSlider" Orientation="Horizontal" Margin="10" 
Value="{x:Bind ViewModel.Position, Mode=TwoWay, Converter={StaticResource TimeSpanToSecondsConverter}}" 
Maximum="{x:Bind ViewModel.Duration.TotalSeconds}"/>

Элемент управления TextBlock

<TextBlock Margin="10" Text="{x:Bind ViewModel.Position, Converter={StaticResource TimeSpanToStringConverter}}"/>

Код для "TimeSpanToSecondsConverter"

public sealed class TimeSpanToSecondsConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var timeSpan = value as TimeSpan?;
return timeSpan?.TotalSeconds ?? 0.0;
}

public object ConvertBack(object value, Type targetType, object parameter, string language)
{
var seconds = value as double?;
return TimeSpan.FromSeconds(seconds ?? 0);
}
}

Код для "TimeSpanToStringConverter"

public sealed class TimeSpanToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var timeSpan = value as TimeSpan?;
return timeSpan?.ToString("mm\\:ss");
}

public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotSupportedException();
}
}

Спасибо.

0 ответов

Другие вопросы по тегам