using System.Linq; using System.Windows.Controls; using System.Windows.Media.Imaging; using ytLive.Models; using ytLive.Services; using ytLive.ViewModels; namespace ytLive.ViewModels; public partial class MainViewModel { private void RegisterLoadedWebSources() { if (_webView2Manager == null) return; foreach (var source in Scenes.SelectMany(s => s.Elements).OfType() .Where(s => s.Type == SourceType.WebSource)) { _webView2Manager.Register(source); source.PropertyChanged += (_, e) => { if (e.PropertyName == nameof(Source.WebUri)) _webView2Manager.OnWebUriChanged(source); }; } } public void InitWebView2(Panel hostPanel) { _webView2Manager = new WebView2Manager(hostPanel, System.Windows.Application.Current.Dispatcher); _webView2Manager.PreviewBitmapChanged += OnWebView2PreviewBitmapChanged; RegisterLoadedWebSources(); } private void OnWebView2PreviewBitmapChanged(string sourceId, WriteableBitmap bitmap) { foreach (var scene in Scenes) foreach (var el in scene.Elements.OfType().Where(s => s.Id == sourceId)) el.VideoImageSource = bitmap; } }