namespace VideoBrowser.Controls.CefSharpBrowser.ViewModels
{
using System;
using System.ComponentModel;
using VideoBrowser.Controls.CefSharpBrowser.Views;
using VideoBrowser.Core;
using VideoBrowser.Extensions;
using VideoBrowser.Helpers;
///
/// Defines the .
///
public class WebBrowserHeaderedItemViewModel : TabItem
{
#region Fields
private VideoBrowserViewModel _videoBrowserViewModel;
#endregion Fields
#region Constructors
///
/// Initializes a new instance of the class.
///
/// The globalBrowserData.
/// The cefWindowData.
/// The downloadAction.
internal WebBrowserHeaderedItemViewModel(GlobalBrowserData globalBrowserData, CefWindowData cefWindowData, Action downloadAction)
{
this.VideoBrowserViewModel = new VideoBrowserViewModel(globalBrowserData, cefWindowData)
{
DownloadAction = downloadAction
};
this.VideoBrowserViewModel.PropertyChanged += this.OnVideoBrowserViewModel_PropertyChanged;
this.Title = this.VideoBrowserViewModel.Header;
UIThreadHelper.Invoke(() =>
{
this.VideoBrowserView = new VideoBrowserView { DataContext = this.VideoBrowserViewModel };
this.Content = this.VideoBrowserView;
});
}
#endregion Constructors
#region Properties
///
/// Gets the VideoBrowserView.
///
public VideoBrowserView VideoBrowserView { get; private set; }
///
/// Gets the VideoBrowserViewModel.
///
public VideoBrowserViewModel VideoBrowserViewModel { get => _videoBrowserViewModel; private set => this.Set(this.OnPropertyChanged, ref _videoBrowserViewModel, value); }
#endregion Properties
#region Methods
///
/// The Dispose.
///
/// The disposing.
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
if (this.VideoBrowserViewModel == null)
{
return;
}
this.VideoBrowserViewModel.PropertyChanged -= this.OnVideoBrowserViewModel_PropertyChanged;
this.VideoBrowserViewModel.Dispose();
this.VideoBrowserViewModel = null;
this.VideoBrowserView.DataContext = null;
this.VideoBrowserView = null;
}
///
/// The OnVideoBrowserViewModel_PropertyChanged.
///
/// The sender.
/// The e.
private void OnVideoBrowserViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.IsMatch(nameof(this.VideoBrowserViewModel.Header)))
{
this.Title = this.VideoBrowserViewModel.Header;
}
}
#endregion Methods
}
}