2017-04-21 106 views
1

我正在为MediaPlayerElement创建CustomMediaTransportControls。在这我想要一个按钮来创建CompactOverlay框架,所以我将下面的代码添加到public sealed class CustomMediaTransportControls : MediaTransportControls尝试读取或写入受保护的内存。这通常表示其他内存已损坏

public async void CompactOverlayButton_ClickAsync(object sender, RoutedEventArgs e) 
{ 
    await CoreApplication.CreateNewView().Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
    { 
     var frame = new Frame(); 
     compactViewId = ApplicationView.GetForCurrentView().Id; 
     frame.Navigate(typeof(VideoPlayerPage)); 
     Window.Current.Content = frame; 
     Window.Current.Activate(); 
     ApplicationView.GetForCurrentView().Title = ""; 
    }); 
    bool viewShown = await ApplicationViewSwitcher.TryShowAsViewModeAsync(compactViewId, ApplicationViewMode.CompactOverlay); 
} 

但是,当我使用这些代码时,我在XAML部分中收到错误消息。 enter image description here 如果我没有使用上述功能,则不会有错误。

解决方案的尝试:

  1. 在PowerShell中

    运行netsh winsock reset
  2. 结算解决方案和重建方案

仅供参考:

这里是我的全部代码

  1. CustomMediaTransportControls.cs - ResourceDictionary
  2. MediaPlayerDictionary.xaml - 从MediaTransportControls派生类
  3. VideosPage.xaml - 页面,CustomMediaTransportControls已使用
+0

'CustomVideoControls'是你开发的东西吗?它是否使用了不安全的{}块? – Milney

+0

@Milney我会附上问题 –

+0

中的全部代码,你能提供完整的xaml代码吗? – Hannes

回答

0

,而不用声明一个变量compactViewId的你班级你应该只在本地申报:

p̶u̶b̶l̶i̶c̶ ̶i̶n̶t̶ ̶c̶o̶m̶p̶a̶c̶t̶V̶i̶e̶w̶I̶d̶ ̶=̶ ̶A̶p̶p̶l̶i̶c̶a̶t̶i̶o̶n̶V̶i̶e̶w̶.̶G̶e̶t̶F̶o̶r̶C̶u̶r̶r̶e̶n̶t̶V̶i̶e̶w̶(̶)̶.̶I̶d̶; /̶/̶ I̶n̶i̶t̶i̶a̶l̶i̶z̶i̶n̶g̶ ̶c̶o̶m̶p̶a̶c̶t̶V̶i̶e̶w̶I̶d̶ ̶t̶o̶ ̶t̶h̶e̶ ̶C̶u̶r̶r̶e̶n̶t̶ ̶V̶i̶e̶w̶ ̶I̶D̶ 

//Button click event for CompactOverlayButton to Create a Frame in CompactOverlay mode 
public async void CompactOverlayButton_ClickAsync(object sender, RoutedEventArgs e) 
{ 
    await CoreApplication.CreateNewView().Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
    { 
     var frame = new Frame(); 
     frame.Navigate(typeof(MainPage)); 
     Window.Current.Content = frame; 
     Window.Current.Activate(); 
     ApplicationView.GetForCurrentView().Title = ""; 
    }); 
    bool viewShown = await ApplicationViewSwitcher.TryShowAsViewModeAsync(ApplicationView.GetForCurrentView().Id, ApplicationViewMode.CompactOverlay); 
} 
+0

谢谢,它的工作原理。你可以请帮助我与[设置可视性=“折叠”不隐藏按钮](http://stackoverflow.com/questions/43562297/setting-visibility-collapsed-doesnt-hide-the-button)这个问题。 –

相关问题