UWP Xbinding сбой с преобразователями - PullRequest
0 голосов
/ 01 февраля 2019

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

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

Свойства:

Position = TimeSpan
Duration = TimeSpan
Duration.TotalSeconds = double

Элементу управления Slider необходимо преобразовать позицию в удвоенное значение.Элементу управления Textblock необходимо преобразовать Position в строку с соответствующим форматом.

Код XAML Slider Control

<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();
}
}

Спасибо.

...