示例#1
0
        private static void OnProgressValueChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            UserControl_ProgressButton button = d as UserControl_ProgressButton;
            ProgressType progressType         = (ProgressType)e.NewValue;

            switch (progressType)
            {
            case ProgressType.Ini:
                ButtonProgressAssist.SetValue(button.but, 0);
                button.packIcon.Kind = button.Kind;
                ButtonProgressAssist.SetIsIndicatorVisible(button.but, false);
                break;

            case ProgressType.Start:
                ButtonProgressAssist.SetValue(button.but, 0);
                ButtonProgressAssist.SetIsIndicatorVisible(button.but, true);
                button.packIcon.Kind = PackIconKind.Sync;
                new DispatcherTimer(TimeSpan.FromMilliseconds(10), DispatcherPriority.Normal, (s, ee) =>
                {
                    if (ButtonProgressAssist.GetValue(button.but) <= 50)
                    {
                        ButtonProgressAssist.SetValue(button.but, ButtonProgressAssist.GetValue(button.but) + 1);
                    }
                    else
                    {
                        ((DispatcherTimer)s).Stop();
                    }
                }, Dispatcher.CurrentDispatcher);
                break;

            case ProgressType.Done:
                new DispatcherTimer(TimeSpan.FromMilliseconds(10), DispatcherPriority.Normal, (s, ee) =>
                {
                    if (ButtonProgressAssist.GetValue(button.but) <= 100)
                    {
                        ButtonProgressAssist.SetValue(button.but, ButtonProgressAssist.GetValue(button.but) + 1);
                    }
                    else
                    {
                        ButtonProgressAssist.SetIsIndicatorVisible(button.but, false);
                        button.packIcon.Kind = PackIconKind.Check;
                        ((DispatcherTimer)s).Stop();
                    }
                }, Dispatcher.CurrentDispatcher);
                break;
            }
        }