From 31e962f594e53fc59178efdcc8e5a444d67d5f92 Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Sat, 4 Apr 2020 19:05:14 +0800 Subject: [PATCH] fixed #346 --- .../Controls/Image/ImageViewer.cs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/Shared/HandyControl_Shared/Controls/Image/ImageViewer.cs b/src/Shared/HandyControl_Shared/Controls/Image/ImageViewer.cs index a531d8d6..ba9678de 100644 --- a/src/Shared/HandyControl_Shared/Controls/Image/ImageViewer.cs +++ b/src/Shared/HandyControl_Shared/Controls/Image/ImageViewer.cs @@ -8,6 +8,7 @@ using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Imaging; +using System.Windows.Threading; using HandyControl.Data; using HandyControl.Interactivity; using HandyControl.Properties.Langs; @@ -157,6 +158,8 @@ namespace HandyControl.Controls /// private bool _showBorderBottom; + private DispatcherTimer _dispatcher; + #endregion Data #region ctor @@ -444,6 +447,18 @@ namespace HandyControl.Controls { if (ImageSource == null || !IsLoaded) return; + if (ImageSource.IsDownloading) + { + _dispatcher = new DispatcherTimer(DispatcherPriority.ApplicationIdle) + { + Interval = TimeSpan.FromSeconds(1) + }; + _dispatcher.Tick += Dispatcher_Tick; + _dispatcher.Start(); + + return; + } + double width; double height; @@ -495,6 +510,25 @@ namespace HandyControl.Controls InitBorderSmall(); } + private void Dispatcher_Tick(object sender, EventArgs e) + { + if (ImageSource == null || !IsLoaded) + { + _dispatcher.Stop(); + _dispatcher.Tick -= Dispatcher_Tick; + _dispatcher = null; + return; + } + + if (!ImageSource.IsDownloading) + { + _dispatcher.Stop(); + _dispatcher.Tick -= Dispatcher_Tick; + _dispatcher = null; + Init(); + } + } + private void ButtonActual_OnClick(object sender, RoutedEventArgs e) { var scaleAnimation = AnimationHelper.CreateAnimation(1);