Więc mam widok z przewijaniem, aby wyświetlić artykuł iw tym widoku klapki mam odtwarzacz mediów od Microsoft Player Framework. Teraz chcę mieć dostęp do tego odtwarzacza multimediów z kodu.WinRT XAML Znajdź sterowanie wewnątrz szablonu elementu FlipView Pozycja
Jednak każdy znaleziony przykład użył FindName na DataTemplate, którego nie widział WinRT.
Próbowałem
var flipViewItem = this.flipView.ItemContainerGenerator.ContainerFromIndex(flipView.SelectedIndex);
a następnie za pomocą VisualTreeHelper znaleźć Media Player ale flipViewItem
zawsze ma wartość null.
Próbowałem powiązania danych z odtwarzaczem wideo - ale powoduje to jednoczesne odtwarzanie wszystkich filmów w widoku klapki.
Czy ktoś może pomóc?
EDIT
Więc to jest mój XAML, że używam:
<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>
Próbowałem wiążący do odtwarzacza multimedialnego:
<mmppf:MediaPlayer x:Name="ArticleVideo" Source="{Binding VideoPath}" Width="560" Height="340" PosterSource="{Binding Image}" AutoPlay="False" />
jednak, gdy to zrobić i ustaw wideo na autoodtwarzanie - wszystkie są autoodtwarzane. Jeśli ręcznie naciśnij przycisk odtwarzania na formancie, otrzymuję wyjątek odwołania zerowy w System.ComponentModel.PropertyChangedEventHandler.Invoke. Odtwarzacz multimedialny działa dobrze poza szablonem.
To, co jest mylące, polega na tym, że wiem, że to, co chcę, jest możliwe. Aplikacja SkyNews dla systemu Windows 8 wykonuje dokładnie to, co chcę zrobić (dodaj wideo do szablonu elementu widoku z odwracaniem). Spojrzałem na c: \ ProgramFiles \ WindowsApps, więc zobacz, jak wyglądały ich xaml, ponieważ jest prawie taki sam jak mój - bez powiązania danych z odtwarzaczem multimediów. Jedyna różnica polega na tym, że mają x: ConnectionId na usercontrol i siatkę zawierającą odtwarzacz wideo w szablonie. Nie wiem, co robi x: ConnectionId - ale czy to możliwe, że ktoś używa tego do uzyskania dostępu do kontrolek z ich kodu?
Czy próbowałeś uczynić go zasobem, a następnie za pomocą 'FrameworkElement.FindResource'? – mydogisbox
Jeśli przeniesię MediaPlayer do '' jak umieścić go we właściwej pozycji na mojej stronie? –
Terry
Ah, przepraszam. Źle zrozumiałem, czym był ten komponent. – mydogisbox