private async void OnSourceImageFileChanged() { if (_isTemplateLoaded && SourceImageFile != null) { // Ensure the stream is disposed once the image is loaded using (IRandomAccessStream fileStream = await SourceImageFile.OpenAsync(Windows.Storage.FileAccessMode.Read)) { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(fileStream); this.sourceImagePixelHeight = decoder.PixelHeight; this.sourceImagePixelWidth = decoder.PixelWidth; } if (this.sourceImagePixelHeight < 2 * 30 || this.sourceImagePixelWidth < 2 * 30) { } else { double sourceImageScale = 1; if (this.sourceImagePixelHeight < this.ActualHeight && this.sourceImagePixelWidth < this.ActualWidth) { this.sourceImage.Stretch = Windows.UI.Xaml.Media.Stretch.None; } else { sourceImageScale = Math.Min(this.ActualWidth / this.sourceImagePixelWidth, this.ActualHeight / this.sourceImagePixelHeight); this.sourceImage.Stretch = Windows.UI.Xaml.Media.Stretch.Uniform; } this.sourceImage.Source = await BitmapHelper.GetCroppedBitmapAsync( this.SourceImageFile, new Point(0, 0), new Size(this.sourceImagePixelWidth, this.sourceImagePixelHeight), sourceImageScale); } } }