Я пытаюсь не жестко закодировать значение атрибута Source для MediaElement с помощью XAML (в отличие от C#).< /п> У меня есть этот код:
Я думаю, что атрибут Source не является «привязываемым» или что-то в этом роде (извините, я здесь новичок). Но если его нельзя привязать, что тогда делать разработчикам?
Если ответ есть в документации, то я не могу его найти.
РЕДАКТИРОВАТЬ: конечно, это сложнее, чем текст выше...
На самом деле я передаю имя файла на страницу, на которой отображаются медиафайлы с другой страницы. Видите, пользователь выбирает видео для просмотра, я беру объект Video и передаю video.filename на новую страницу, на которой будет отображаться видео.
Моя первоначальная идея заключалась в следующем. Сначала передайте имя видеофайла со страницы, где пользователь выбирает видео:
[RelayCommand] частная асинхронная задача NavigateToPlayMediaPage (видео-видео) { строка str = "embed://" + video.VideoFilename; // "ThrowSource" — это строковый реквизит await Shell.Current.GoToAsync($"//{nameof(PlayMediaPage)} ThrowSource={str}"); } Мы улавливаем строку на странице, где отображаем медиа, и делаем это в Xaml:
Конечно, оказывается, что Source принимает объект типа MediaSource.
ОК. Итак, что я мог бы сделать, так это создать объект MediaSource из строки переданного имени файла. Я мог бы создать метод «Появление» (который выполняется перед Xaml). В этом методе «Появление» я мог бы создать MediaSource:
с использованием CommunityToolkit.Maui.Views; пространство имен ems_mobile.ViewModel; [QueryProperty("CatchSource","ThrowSource")] общедоступный частичный класс PlayMediaPageViewModel: ObservableObject { [Обсерваблесвойство] строка catchSource; [Команда Реле] Появление частной асинхронной задачи() { вар mediaSource = MediaSource.FromResource(CatchSource); } } И тогда я мог бы использовать этот объект MediaSource в Xaml:
Увы, это не работает. У меня просто белый экран. Нет игрока. Нет ошибки. Проблема в том, что в методе «Появление» у меня фактически нет доступа к переданной строке. Я думаю, что методы «Появления» не получают передаваемые строки или что-то в этом роде.
============================================ =======================
РЕДАКТИРОВАТЬ: Получаем странное исключение. Если я смогу это понять, у меня все будет хорошо.
Я передаю объект Media Source со страницы SelectMedia на ViewMediaPage. Он передается правильно с правильными значениями.
Вот он, наслаждающийся методом, в котором он передается:

А вот он, на другой стороне, нахальный ублюдок, ценности нетронуты:

Вот xaml — мне он кажется хорошим:

Единственная проблема... когда я захожу в ViewMediaPage, происходит следующее:
