描述错误
我正在设计类似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转换器。
答案 0 :(得分:1)
我检查了您的代码并触发了此错误。
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存储库中提问。
最诚挚的问候。