使用转换器时,ItemsRepeater引发System.InvalidCastException

描述错误

我正在设计类似NetFlix主页的应用程序。为了获得更好的用户体验,我在ItemsRepeater数据模板中使用了一些转换器。 然后,应用每次凝视都会崩溃,并抛出异常System.InvalidCastException。 但是,如果我不使用转换器,则该应用程序将启动并运行良好。

重现该错误的步骤

1. Go to MovieTemplate,change Image's source to
Source="{x:Bind PosterUrl,Converter={StaticResource imageUrlCompress}}"
2. Run app.

预期的行为

应用运行良好,并显示正常的主页。

胜利:18362.418 microsoft.UI.Xaml:2.2.190917002

其他上下文

这里是一个小的repo,特别感谢@XamlBrewer的回购。

在WINUI 3.0 alpha中,所有转换器都会崩溃,包括TextBlock转换器。

wang19898312as 回答:使用转换器时,ItemsRepeater引发System.InvalidCastException

我检查了您的代码并触发了此错误。

  

System.InvalidCastException:无法将类型为“ System.String”的对象转换为类型为“ Windows.UI.Xaml.Media.ImageSource”。

该错误表明无法将字符串直接分配给Image.Source

您可以这样重写Converter:

public object Convert(object value,Type targetType,object parameter,string language)
{
    return new BitmapImage(
        new Uri("https://www.viu.com/ott/hk/v1/imgprocess/reduceImage.php?p=50&img=" + value.ToString())
        );
}

Image.Source接受基于Windows.UI.Xaml.Media.ImageSource的数据作为图像源,而BitmapImage是其中之一。

直接使用绑定可以将字符串用作源,因为XAML具有内部转换器,但是当您显式设置转换器时,内部转换器将不再起作用,您必须自己转换输出。


此外,WinUI 3.0当前处于预览阶段。如果遇到问题,请在WinUI's Github存储库中提问。

最诚挚的问候。

本文链接:https://www.f2er.com/3133668.html

大家都在问