所以我有一个翻转视图来显示一篇文章,在这个翻转视图中,我有一个来自Microsoft框架的媒体播放器。现在我希望能够从代码中访问这个媒体播放器。
但是,我发现的每一个示例都在DataTemplate上使用了WinRT未见过的DataTemplate。
我试过了
var flipViewItem = this.flipView.ItemContainerGenerator.ContainerFromIndex(flipView.SelectedIndex);然后使用VisualTreeHelper查找Media,但flipViewItem始终为null。
我尝试了数据绑定视频播放器-但这会导致翻转视图项目中的所有视频同时播放。
有人能帮忙吗?
编辑
这是我正在使用的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" />然而,当我这样做,并将视频设置为自动播放-他们都自动播放。如果手动按下控件上的play,则在System.ComponentModel.PropertyChangedEventHandler.Invoke.上会收到空引用异常。媒体播放器在模板外工作良好。
令人困惑的是,我知道我想要什么是可能的。windows 8的SkyNews应用程序完成了我想做的事情(将视频添加到翻转视图项模板中)。我看了一下c:\ProgramFiles\WindowsApps,看看他们的xaml是什么样子的--和我的差不多--媒体播放器上没有数据绑定。唯一的区别是它们在用户控件上有x:ConnectionId,而在模板中包含视频播放器的网格。我不知道x:ConnectionId能做什么--但是他们是否有可能使用它从代码中访问控件呢?
发布于 2012-08-14 21:18:38
查看http://winrtxamltoolkit.codeplex.com/downloads/get/467926并查看VisualTreeHelperExtensions。
在可视化树中没有找到元素的直接方法。您需要使用VisualTreeHelper.GetChild(flipView,i)方法。实现起来并不难,但Toolkit只有一个扩展方法类文件,可以直接添加到项目中。它提供了一种按类型获取后代或祖先的方法。我想它符合你要找的东西。
发布于 2012-10-18 16:04:42
好的。如果要访问模板中的命名控件,请参阅此处http://blog.jerrynixon.com/2012/09/how-to-access-named-control-inside-xaml.html
https://stackoverflow.com/questions/11870676
复制相似问题