我必须在UWP应用中将转换器与Texblock和Slider一起使用。 使用绑定时,一切正常,但更改为x:Bind后,转换器停止工作。这些属性正在正确更新,并且如果我从文本框中删除了Converter,我会看到这些值正在更新(但没有正确的格式)。
也许有人可以帮助我更改转换器代码,使其与x:Bind兼容(我已经尝试过,但找不到解决方案)。
属性:
Position = TimeSpan
Duration = TimeSpan
Duration.TotalSeconds = double
Slider控件需要将Position转换为double。 Textblock控件需要将Position转换为具有正确格式的字符串。
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();
}
}
谢谢。