如何阻止网格控件内的 VideoView 控件使用 LibVLCSharp 库打开新的 window?

How do I stop VideoView control inside a Grid control from opening a new window using LibVLCSharp library?

我正在使用 LibVLCSharp.WPF 通过 VideoView 控件播放视频。我在 ViewModel 中绑定了 MediaPlayer 和 Visibility。我可以让它播放视频,但不是嵌入它创建的 Grid 控件中,而是打开一个新的 window 并在那里播放视频。我已经搜索并发现存在空域问题,但也许我做错了什么,阻止视频在网格内播放,就像将图像放在图像控件中一样。

播放器位于 MainWindow 内的 UserControl 内。

XAML

<Grid>    
    <media:VideoView x:Name="MediaPlayer"
        VerticalAlignment="Center"
        HorizontalAlignment="Center"
        MediaPlayer="{Binding MyMediaPlayer}"
        Visibility="{Binding IsMediaPlayerVisible, Converter={StaticResource VisConverter}}"/>
</Grid>

视图模型

void StartVideo()
{
    IsMediaPlayerVisible = true;

    Core.Initialize();
    using (_libVLC = new LibVLC())
    {
        MyMediaPlayer = new MediaPlayer(_libVLC);
        MyMediaPlayer.Media = new Media(_libVLC, new Uri(@"path\to\media\file"));
        MyMediaPlayer.Play();
    }
}

我可以像网格中的图像控件一样嵌入 VideoView 吗?

请始终分享 完整 最小示例。您的 Q 缺少大部分代码。

LibVLC 将在提供的 Window(例如此处的 VideoView)未准备好或未完全初始化时创建一个新的 Windows。

根据经验,始终从官方 libvlcsharp 示例开始。 https://code.videolan.org/videolan/LibVLCSharp/-/blob/3.x/samples/LibVLCSharp.WPF.Sample/Controls.xaml.cs

public Controls(Example1 Parent)
{
    parent = Parent;

    InitializeComponent();

    // we need the VideoView to be fully loaded before setting a MediaPlayer on it.
    parent.VideoView.Loaded += VideoView_Loaded;
    PlayButton.Click += PlayButton_Click;
    StopButton.Click += StopButton_Click;
    Unloaded += Controls_Unloaded;
}

private void VideoView_Loaded(object sender, RoutedEventArgs e)
{
    _libVLC = new LibVLC(enableDebugLogs: true);
    _mediaPlayer = new MediaPlayer(_libVLC);

    parent.VideoView.MediaPlayer = _mediaPlayer;
}