我在Windows 8商店應用程序的GridApp的itemsdetail頁面的flipview內使用MediaElement控件,並且我面臨着一個特殊類型的問題使用它。 MediaElement不顯示視頻,只有預期視頻輸出的黑屏,但播放視頻的音頻非常好。MediaElement控件不顯示視頻只播放Grid應用程序中視頻的音頻
現在我的問題的特殊部分是,在網格應用程序中有一組項目的集合(我知道每個人都可能知道這一點,只是爲了讓自己清楚),每組的第一項播放視頻就好了我的意思是它顯示的視頻和音頻很好,但組的其他項目只是不顯示視頻只是播放視頻的音頻。有人知道爲什麼會發生這種情況嗎?
這裏是XAML代碼:
<FlipView
x:Name="flipView"
AutomationProperties.AutomationId="ItemsFlipView"
AutomationProperties.Name="Item Details"
TabIndex="1"
Grid.RowSpan="2"
ItemsSource="{Binding Source={StaticResource itemsViewSource}}">
<FlipView.ItemContainerStyle>
<Style TargetType="FlipViewItem">
<Setter Property="Margin" Value="0,137,0,0"/>
</Style>
</FlipView.ItemContainerStyle>
<FlipView.ItemTemplate>
<DataTemplate>
<UserControl Loaded="StartLayoutUpdates" Unloaded="StopLayoutUpdates">
<ScrollViewer x:Name="scrollViewer" Style="{StaticResource VerticalScrollViewerStyle}" Grid.Row="1">
<Grid Margin="120,0,20,20">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="400" />
<ColumnDefinition Width="40" />
<ColumnDefinition Width="360" />
<ColumnDefinition Width="40" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border BorderBrush="Black" BorderThickness="1" Width="350" HorizontalAlignment="Left" Grid.Row="0">
<MediaElement x:Name="VideoSource" AutomationProperties.Name="VideoSource" Source="/Assets/Big_Buck_Bunny.mp4" HorizontalAlignment="Center" VerticalAlignment="Stretch" Height="250" Width="350" AutoPlay="False" IsLooping="True" />
</Border>
<Border BorderBrush="Black" BorderThickness="1" Height="65" Width="350" HorizontalAlignment="Left" Grid.Row="1">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button x:Name="playButton" Margin="0,0" Click="playButton_Click" Style="{StaticResource PlayAppBarButtonStyle}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Button x:Name="pauseButton" Margin="0,0" Click="pauseButton_Click" Style="{StaticResource PauseAppBarButtonStyle}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</StackPanel>
</Border>
</Grid>
</ScrollViewer>
</UserControl>
</DataTemplate>
</FlipView.ItemTemplate>
這裏是後面的代碼:
private void playButton_Click(object sender, RoutedEventArgs e)
{
MediaElement media = FindControl<MediaElement>(this, "VideoSource") as MediaElement;
media.Play();
}
private void pauseButton_Click(object sender, RoutedEventArgs e)
{
MediaElement media = FindControl<MediaElement>(this, "VideoSource") as MediaElement;
media.Pause();
}
private void stopButton_Click(object sender, RoutedEventArgs e)
{
MediaElement media = FindControl<MediaElement>(this, "VideoSource") as MediaElement;
media.Stop();
}
private DependencyObject FindControl<T>(DependencyObject controlType, string ctrlName)
{
int childNumber = VisualTreeHelper.GetChildrenCount(controlType);
for (int i = 0; i < childNumber; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(controlType, i);
FrameworkElement fe = child as FrameworkElement;
// Not a framework element or is null
if (fe == null) return null;
if (child is T && fe.Name == ctrlName)
{
// Found the control so return
return child;
}
else
{
// Not found it - search children
DependencyObject nextLevel = FindControl<T>(child, ctrlName);
if (nextLevel != null)
return nextLevel;
}
}
return null;
}
我希望我自己對這個問題不清楚。
視頻是否在另一個應用中播放?嘗試http://code.msdn.microsoft.com/windowsapps/Classic-Video-Player-de838b19。 – 2013-03-04 17:25:23
@Matt Harrington我不確定你在問什麼,如果你問mediaelement是否支持這種格式的視頻,那麼它確實播放該視頻格式。 – Justice 2013-03-05 17:42:58