| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | using InABox.Wpf;using System.Windows;using System.Windows.Media;using System.Windows.Threading;namespace InABox.WPF{    /// <summary>    ///     Interaction logic for ProgressForm.xaml    /// </summary>    public partial class ProgressForm : ThemableWindow    {        private readonly ImageSource _image = null;        private bool on = true;        public ProgressForm()        {            InitializeComponent();            Topmost = true;            var timer = new DispatcherTimer(DispatcherPriority.Send)            {                Interval = new TimeSpan(0, 0, 0, 0, 500)            };            timer.Tick += (o, e) =>            {                on = !on;                Progress.Background = new SolidColorBrush(on ? Colors.LightGreen : Colors.LightSalmon);            };            timer.IsEnabled = false;        }        public ImageSource DisplayImage        {            get => _image;            set            {                Image.Width = value.Width;                Image.Height = value.Height;                Image.Background = new ImageBrush(value) { Stretch = Stretch.UniformToFill };            }        }        //public void OpenWindow(String message)        //{        //    if (Progress.Dispatcher.CheckAccess())        //        Update(message);        //    else        //        Progress.Dispatcher.BeginInvoke(new Action(() => { Update(message); }), DispatcherPriority.Send);        //}        //private delegate void UpdateDelegate(string message);        //private void Update(String message)        //{        //    Progress.Content = message;        //}        public void UpdateWindow(string message)        {            if (Progress.Dispatcher.CheckAccess())                Progress.Content = message;            else                Progress.Dispatcher.Invoke(() => { Progress.Content = message; });            //Progress.Dispatcher.BeginInvoke(new Action(() => { Update(message);  }), DispatcherPriority.Send);        }        //private delegate void HideDelegate();        public void CloseWindow()        {            if (Progress.Dispatcher.CheckAccess())                Close();            else                Progress.Dispatcher.Invoke(() => { Close(); });            //Progress.Dispatcher.BeginInvoke(new Action(() => { Close(); }), DispatcherPriority.Send);        }        public string GetMessage()        {            return Progress.Content as string;        }        private void Window_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)        {            if(e.ChangedButton == System.Windows.Input.MouseButton.Left)            {                DragMove();            }        }    }}
 |