【发布时间】:2019-12-06 07:40:11
【问题描述】:
我正在编写一个 WPF 桌面应用程序,具有一些视频播放功能。我决定使用 LibVLCSharp.WPF 来完成播放任务。
Xaml 代码:
<UserControl ...
xmlns:vlc="clr-namespace:LibVLCSharp.WPF;assembly=LibVLCSharp.WPF"
... >
<vlc:VideoView VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Canvas VerticalAlignment="Stretch" HorizontalAlignment="Stretch" MouseEnter="Canvas_MouseEnter">
</Canvas>
</vlc:VideoView>
</UserControl>
播放视频效果很好,但是当我尝试将一些隐藏控件放入 Canvas(或任何其他类型的 Panel 控件)并使用 MouseEnter 事件更改它们的可见性时,什么也没有发生。
在调试时,我发现MouseEnter 事件只有在Canvas 至少有一个可见控件作为其子控件并且鼠标指针进入该可见控件时才能触发。
我已阅读有关“空域问题”的文章。这似乎与我无关,因为我只想在播放区域内绘制一个控制层。
有什么方法可以在 VLC 播放器上放置一个自动显示面板,仅当鼠标“悬停”在播放区域上时才会显示?
【问题讨论】:
-
似乎与 code.videolan.org/videolan/LibVLCSharp/issues/267#note_48214 相关。您是否尝试设置背景颜色?
-
您需要了解的是,将控件放在 VideoView 中确实是一种 hack。这些控件被分离并放置在 VideoView 上方的窗口中,这就是事件不冒泡的原因
-
@cube45 我将面板的背景更改为“#01000000”,并且成功了。谢谢。
标签: c# wpf libvlcsharp