uwp绑定失败,转换器

时间:2019-01-31 22:38:50

标签: c# uwp xbind

我必须在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();
}
}

谢谢。

0 个答案:

没有答案