ItemsRepeater выдает System.InvalidCastException при использовании конвертера - PullRequest
0 голосов
/ 09 ноября 2019

Опишите ошибку

Я разрабатываю приложение, подобное домашней странице NetFlix. Для удобства пользователей я использовал несколько конвертеров в шаблоне данных ItemsRepeater. Затем приложение вылетает каждый раз, когда пялится, и выбрасывает исключение System.InvalidCastException. Но если я не использую конвертер, приложение запускается и работает хорошо.

Действия по воспроизведению ошибки

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

Ожидаемое поведение

Приложение работает нормально и показывает обычную домашнюю страницу.

Win: 18362,418 Microsoft.UI.Xaml: 2.2.190917002

Дополнительный контекст

Вот небольшое репо и особая благодарность репо @ XamlBrewer.

В альфа-версии WINUI 3.0 все конвертеры вызывают сбой, включая конвертер TextBlock.

1 Ответ

1 голос
/ 11 ноября 2019

Я проверил ваш код и вызвал эту ошибку.

System.InvalidCastException: Невозможно преобразовать объект типа 'System.String' в тип 'Windows.UI.Xaml.Media.ImageSource'.

В сообщении об ошибке указывается, что строку нельзя напрямую присвоить Image.Source.

. Преобразователь можно переписать следующим образом:

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 Github .

С уважением.

...