似乎
LibVLCSharp.Avalonia
正在单独的窗口上渲染视频播放器,这导致我的应用程序出现问题。
我正在遵循示例代码here,并且效果很好。但是,我遇到一个问题,当我专注于其中一个控件时,整个窗口都会失去焦点。
这是显示
VideoView
的部分代码:
<Grid RowDefinitions="Auto, *, Auto">
<Label Grid.Row="0" HorizontalAlignment="Center">Video Player</Label>
<vlc:VideoView Grid.Row="1" MediaPlayer="{Binding MediaPlayer}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
PointerEntered="VideoViewOnPointerEntered"
PointerExited="VideoViewOnPointerExited">
<Panel Name="ControlsPanel">
<StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" Background="#900000FF" Spacing="20">
<Button Command="{Binding Play}" Margin="20">Play</Button>
<Button Command="{Binding Stop}" Margin="20">Stop</Button>
</StackPanel>
</Panel>
</vlc:VideoView>
</Grid>
我还导出了我的应用程序以在我的 Linux (Hyprland) 安装上测试它,当我拖动窗口时会发生这种情况:
这有点难看,因为我必须取消窗口焦点才能截取屏幕截图,但您可以看到控件被放入一个完全独立的窗口中。这显然不理想。
我只是好奇是否有一种方法可以将播放器嵌入到窗口内而不是分开。
在视频视图可见之前不要开始 Play() 视频。 在窗口打开之前,视频视图无法知道其窗口句柄,但 libvlc 期望在调用播放函数时知道窗口句柄