我遇到了MediaElement的一个非常奇怪的问题,似乎与多屏幕环境有关:偶尔(我不能每次都复制问题)MediaElement在我拖动窗口时停止播放&#39 ;从屏幕到另一个屏幕。 这种奇怪的行为也发生在一个非常基本的代码上,如:
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>
有没有人经历过(并最终解决)任何类似的问题?
答案 0 :(得分:11)
我找到了一种解决方法,在窗口渲染中禁用硬件加速似乎解决了这个问题:
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);
}
我无法察觉到性能上的任何差异,并且问题不会出现在任何测试中......