Tengo una vista invertida para mostrar un artículo y en esta vista general tengo un Reproductor multimedia del Microsoft Player Framework. Ahora quiero poder acceder a este reproductor multimedia desde el código.WinRT XAML Buscar control dentro de FlipView Plantilla de artículo
Sin embargo, todos los ejemplos que he encontrado han utilizado FindName en DataTemplate que WinRT no tiene.
He tratado
var flipViewItem = this.flipView.ItemContainerGenerator.ContainerFromIndex(flipView.SelectedIndex);
y luego usar el VisualTreeHelper para encontrar el reproductor de medios, pero flipViewItem
siempre es nula.
Intenté el enlace de datos del reproductor de video, pero esto hace que todos los videos en los elementos de la vista invertida se reproduzcan simultáneamente.
¿Alguien puede ayudarnos?
EDITAR
Así que este es mi xaml que estoy usando:
<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>
He tratado de unión con el reproductor de medios:
<mmppf:MediaPlayer x:Name="ArticleVideo" Source="{Binding VideoPath}" Width="560" Height="340" PosterSource="{Binding Image}" AutoPlay="False" />
Sin embargo, cuando hago eso y configura los videos para que se reproduzcan automáticamente; todos se reproducen automáticamente. Si presiono jugar de forma manual en el control, recibo una excepción de referencia nula en System.ComponentModel.PropertyChangedEventHandler.Invoke. El reproductor multimedia funciona bien fuera de la plantilla.
Lo que es confuso, es que sé que lo que quiero es posible. La aplicación SkyNews para Windows 8 hace exactamente lo que quiero hacer (agregar un video a una plantilla de elemento de vista invertida). Eché un vistazo a c: \ ProgramFiles \ WindowsApps, así que veré cómo era su xaml en casi el mismo aspecto que el mío, sin vinculación de datos en el reproductor de medios. La única diferencia es que tienen x: ConnectionId en el control de usuario y la cuadrícula que contiene el reproductor de video en la plantilla. No sé qué es x: ConnectionId sí, pero ¿es posible que alguien lo esté usando para acceder a los controles desde su código?
¿Ha intentado convertirlo en un recurso y luego usar 'FrameworkElement.FindResource'? – mydogisbox
Si muevo el MediaPlayer a '' ¿cómo puedo colocarlo en la posición correcta en mi página? –
Terry
Ah, lo siento. No entendí cuál era el componente. – mydogisbox