LibVLCSharp.WPF VideoView.Content(重叠)滚动

时间:2019-03-18 13:35:11

标签: c# wpf libvlc libvlcsharp

我正在尝试在不断变化的视图(滚动,调整大小等)中包括一些重叠的VideoView。问题在于,覆盖层保持在相同位置。我试图修复它,我一直在寻找解决方案,但是我找不到或想出任何办法。有可能这样做吗?

为了提供演示,我通过以下方式从LibVLCSharp.WPF.Sample应用程序中编辑了 Example1.xaml Example1.xaml.cs :< / p>

Example1.xaml
...
<ScrollViewer>
    <StackPanel>
        <StackPanel Background="Blue" Height="300" Width="200"/>
        <uc:VideoView x:Name="VideoView" Width="200" Height="200"/>
        <StackPanel Background="Red" Height="300" Width="200"/>
    </StackPanel>
</ScrollViewer>
...

Example1.xaml.cs
...
public Example1()
{
    InitializeComponent();

    _controls = new Controls(this);
    VideoView.Content = _controls;
    VideoView.Height = 200;
}
...

这将使窗口可滚动,并应演示该问题。问题在于,“开始”和“停止”按钮不随VideoView滚动。

未滚动: Unscrolled 滚动: Scrolled

谢谢。

1 个答案:

答案 0 :(得分:2)

如果您遵循LibVLCSharp和Vlc.DotNet中“在vlc视图上编写控件的悠久历史”,以及更广泛的关于“在WinFormsHost上编写WPF控制控件”的问题,那么您就会知道这全都是关于黑客和权衡的问题

简而言之:

  • WPF无法显示视频,因此我们需要创建一个WinFormsHost
  • 用户希望能够轻松控制视频。 WPF不能轻易做到这一点(它被称为“空域问题”),我们试图提供一种开箱即用的解决方案,它实际上是一个hack,并在其上方绘制了一个窗口。

我认为问题在于我们如何处理浮动窗口,您应该在code.videolan.org上发布问题。否则,您将需要使用自己的修补程序重新实现VideoView