2012-05-18 5 views
10

Sto riscontrando un problema molto strano con MediaElement che sembra essere correlato all'ambiente multi schermo: occasionalmente (non riesco a replicare il problema ogni volta) MediaElement smette di giocare quando trascino la finestra è da uno schermo all'altro. Questo strano behaivor avviene anche con un codice molto di base come:WPF MediaElement smette di riprodurre se spostato su un'altra schermata

public MainWindow() 
{ 
    InitializeComponent(); 
} 

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

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> 

Qualcuno ha avuto (ed eventualmente risolto) qualsiasi problema simile?

risposta

10

Ho trovato una soluzione alternativa, disabilitando l'accelerazione hardware nel rendering della finestra sembra risolvere il problema:

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); 
    } 

non riesco a percepire alcuna differenza in termini di prestazioni, e il problema non compare in qualsiasi test ...

+0

ha funzionato, grazie! piuttosto strano, in effetti, –

+0

So che questo è vecchio, ma volevo solo dire che se posizioni il video in modo che sia parzialmente su diversi monitor, il video verrà riprodotto solo su un lato. Questo è un problema piuttosto secondario però. –