c# - 文本未从 MediaPlayerElement (UWP) 更新 onTransportControl
问题描述
我尝试像这些代码一样将视频标题放在 MediaPlayerElement 的 TransportControl
MediaTransportControlsStyle.xaml
...
<TextBlock
Name="tblTitle"
Grid.Column="1"
Margin="5"
FontFamily="Arial"
FontSize="22"
FontWeight="SemiBold"
TextAlignment="Center" />
...
PlayerPage.xaml.cs
private async void MediaPlayer_MediaOpened(MediaPlayer sender, object args)
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
FrameworkElement transportControlsTemplateRoot = (FrameworkElement)VisualTreeHelper.GetChild(player.TransportControls, 0);
TextBlock tblTitle = (TextBlock)transportControlsTemplateRoot.FindName("tblTitle");
if (tblTitle != null)
tblTitle.Text = MediaTitle; // Debug can run to this line
});
}
问题是tblTitle只是在应用程序第一次导航到PlayerPage.xam l 页面时更新。从第二次开始,即使调试运行到该行,tblTitle 也保持空白
tblTitle.Text = MediaTitle; // Debug can run to this line
我想我与 Dispatcher.RunAsync 方法有关以更新 UI 线程。我尝试了几种方法,但没有运气。我该如何解决这个问题?
解决方案
我发现转到 PlayerPage 时我没有重新启动 MediaPlayer。每次都初始化它就完成了
推荐阅读
- ruby-on-rails - 如果测试工作流程通过,则运行部署工作流程
- javascript - 从 json 对象中动态删除未使用的键
- reactjs - aws - 我应该在一个请求中集成 s3 上传并将 s3 url 存储在 dynamodb 中吗?
- google-play - Android TV 应用未显示在某些设备的 TV Play 商店中
- python - 不能将序列乘以非整数类型的“列表”与用户选择的列表项
- java - 如何在非 Spring 对象中自动装配而不使用 ApplicationContext 按名称获取 Bean
- javascript - 在 Angular 10 中使用一个全局过滤器管道
- python - 如何让工作人员在 Python 多处理中进行交流以找到问题的最佳解决方案?
- database-design - 如何将菜单存储在 MySQL 数据库中?
- javascript - web3的以太坊数据读写时间波动