2012-05-18 43 views
10

MediaElement似乎與多屏幕環境有關:我偶爾(我無法每次都複製問題)MediaElement在我拖動時停止播放它從一個屏幕到另一個屏幕的窗口。 這種奇怪behaivor也恰好有一個非常基本的代碼,如:如果移動到其他屏幕,WPF MediaElement停止播放

public MainWindow() 
{ 
    InitializeComponent(); 
} 

protected override void OnSourceInitialized(EventArgs e) 
{ 
    media.Play(); 
    base.OnSourceInitialized(e); 
} 

<Window x:Class="Test.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <MediaElement LoadedBehavior="Manual" 
         Name="media" 
         Source="C:\Users\Maurizio\Desktop\Pulp Fiction.avi"/> 
    </Grid> 
</Window> 

任何人都經歷(並最終解決)任何類似的問題?

回答

10

我找到了一個解決辦法,禁用窗口渲染硬件加速似乎解決了問題:

using System.Windows.Interop; 
... 

    protected override void OnSourceInitialized(EventArgs e) 
    { 
     HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource; 
     HwndTarget hwndTarget = hwndSource.CompositionTarget; 
     hwndTarget.RenderMode = RenderMode.SoftwareOnly; 
     media.Play(); 
     base.OnSourceInitialized(e); 
    } 

我看不出任何性能上的差異,這個問題不會出現在任何測試...

+0

工作,謝謝!確實很奇怪 –

+0

我知道這是舊的,但只是想提到,如果您定位視頻,以便它部分跨越不同的顯示器,視頻將只在一側播放。但這是一個很小的問題。 –

相關問題