所以我有一个翻转视图来显示一篇文章,在这个翻转视图中我有一个来自Microsoft Player Framework的媒体播放器。现在我希望能够从代码中访问这个媒体播放器。
但是,我发现的每个示例都在 DataTemplate 上使用了 FindName,而 WinRT 没有。
我努力了
var flipViewItem = this.flipView.ItemContainerGenerator.ContainerFromIndex(flipView.SelectedIndex);
然后使用 VisualTreeHelper 查找媒体播放器,但flipViewItem
始终为空。
我尝试数据绑定视频播放器 - 但这会导致翻转视图项目中的所有视频同时播放。
有人可以帮忙吗?
编辑
所以这是我正在使用的 xaml:
<FlipView
x:Name="flipView"
AutomationProperties.AutomationId="ItemsFlipView"
AutomationProperties.Name="Item Details"
TabIndex="1"
Margin="0,127,0,10"
ItemsSource="{Binding Source={StaticResource itemsViewSource}}" Grid.RowSpan="2">
<FlipView.ItemTemplate>
<DataTemplate>
<UserControl Loaded="StartLayoutUpdates" Unloaded="StopLayoutUpdates">
<ScrollViewer x:Name="scrollViewer" Style="{StaticResource HorizontalScrollViewerStyle}" Grid.Row="1">
<common:RichTextColumns x:Name="richTextColumns" Margin="117,0,117,47">
<RichTextBlock x:Name="richTextBlock" Width="560" Style="{StaticResource ItemRichTextStyle}">
<Paragraph>
<Run FontSize="26.667" FontWeight="Light" Text="{Binding Title}"/>
</Paragraph>
<Paragraph LineStackingStrategy="MaxHeight">
<InlineUIContainer>
<Grid Width="560" Height="340" Margin="0,20,0,10">
<Grid.Background>
<ImageBrush ImageSource="{Binding Image}" Stretch="UniformToFill" />
</Grid.Background>
<Image x:Name="OverlayImage" Visibility="{Binding ShowVideo, Converter={StaticResource booleanToVisibilityConverter}}" Source="Assets/play-icon.png"/>
<mmppf:MediaPlayer x:Name="ArticleVideo" Width="560" Height="340" />
</Grid>
</InlineUIContainer>
我尝试绑定到媒体播放器:
<mmppf:MediaPlayer x:Name="ArticleVideo" Source="{Binding VideoPath}" Width="560" Height="340" PosterSource="{Binding Image}" AutoPlay="False" />
但是,当我这样做并将视频设置为自动播放时 - 它们都会自动播放。如果我在控件上手动按下播放,我会在 System.ComponentModel.PropertyChangedEventHandler.Invoke 收到空引用异常。媒体播放器在模板外工作正常。
令人困惑的是,我知道我想要什么是可能的。适用于 Windows 8 的 SkyNews 应用程序完全符合我的要求(将视频添加到翻转视图项目模板)。我查看了 c:\ProgramFiles\WindowsApps 看看他们的 xaml 看起来和我的几乎一样——媒体播放器上没有数据绑定。唯一的区别是它们在用户控件和包含模板中视频播放器的网格上具有 x:ConnectionId。我不知道 x:ConnectionId 做了什么——但他们是否有可能是使用它来从他们的代码中访问控件的人?