using Microsoft.Extensions.Logging; using System; using System.Extensions; using System.Http; using System.IO; using System.Windows; using System.Windows.Extensions; using System.Windows.Media; using System.Windows.Media.Effects; using System.Windows.Media.Imaging; using WpfExtended.Tests.Controls; using WpfExtended.Tests.Utilities; namespace WpfExtended.Test { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { public readonly static DependencyProperty ImageSourceProperty = DependencyPropertyExtensions.Register(nameof(ImageSource)); public ImageSource ImageSource { get => this.GetTypedValue(ImageSourceProperty); set => this.SetTypedValue(ImageSourceProperty, value); } private readonly ILogger scopedLogger; private readonly ILogger logger; private readonly IHttpClient httpClient; public MainWindow( ILogger scopedLogger, ILogger logger, IHttpClient httpClient) { this.InitializeComponent(); this.scopedLogger = scopedLogger.ThrowIfNull(nameof(scopedLogger)); this.logger = logger.ThrowIfNull(nameof(logger)); this.httpClient = httpClient.ThrowIfNull(nameof(httpClient)); this.ImageSource = new BitmapImage(new Uri(Path.GetFullPath("Images/Test.jpg"))); this.logger.LogCritical(new Exception("Some exception message"), "Some exception is logged"); this.BuildEffectsView(); } private async void BuildEffectsView() { await this.httpClient.GetAsync("https://google.com"); foreach(var effectType in TypeCrawler.GetTypes()) { var effect = Activator.CreateInstance(effectType).As(); this.scopedLogger.LogInformation($"Creating effect {effectType.Name}"); this.logger.LogInformation($"Creating effect {effectType.Name}"); var image = new CaptionedImage() { Width = 800, Height = 800, ImageSource = this.ImageSource, Caption = effect.GetType().Name, ImageEffect = effect, BorderBrush = Brushes.LightGray, BorderThickness = new Thickness(1) }; this.WrapPanel.Children.Add(image); } } } }