14

Does anybody have a WPF example of updating the ProgressState through the available enum states when progressing through ProgressValue?

I have the following code which binds my progress value to run from 0 to 1:

<Window.TaskbarItemInfo>
    <TaskbarItemInfo Description="An app with a taskbar info description" 
                     ProgressValue="{Binding Count}" ProgressState="Normal"/>
</Window.TaskbarItemInfo>

But, what is a good way to go from None to Normal to None or other flows: None-Normal-Paused-Normal-None. The code above shows the progress bar on the left at 0% and then finishes at 100% (1). I imagine I could bind this with a converter to another property hanging of my ViewModel, but wanted to see if anyone had any slicker solutions.

Thanks!

Sean B
  • 11,189
  • 3
  • 27
  • 40
  • To be clear, my view model is incrementing through the range from 0 to 1 just fine (by 0.1). But having the XAML ProgressState set to Normal as in the snippet is too static. Need to cycle through the states as described. – Sean B Apr 20 '11 at 21:41
  • One minor thing: the taskbar progress seems to be theme dependent, not solely windows version dependent, meaning under windows 7 using classic theme (no aero) you won't ever see it ;/ but the windows 7 problem should be "solved" shortly right :D – DrCopyPaste Jan 16 '19 at 20:52

2 Answers2

10

In the same way that you are binding the ProgressValue, you can also bind the ProgressState. The type of the ProgressState is an enum called TaskbarItemProgressState, which includes the states you already mentioned.

public enum TaskbarItemProgressState
{
    // Summary:
    //     No progress indicator is displayed in the taskbar button.
    None = 0,
    //
    // Summary:
    //     A pulsing green indicator is displayed in the taskbar button.
    Indeterminate = 1,
    //
    // Summary:
    //     A green progress indicator is displayed in the taskbar button.
    Normal = 2,
    //
    // Summary:
    //     A red progress indicator is displayed in the taskbar button.
    Error = 3,
    //
    // Summary:
    //     A yellow progress indicator is displayed in the taskbar button.
    Paused = 4,
}

I think the 'slickest' ways to do this are the ways you already mentioned, either with a converter or manually

Tim W
  • 101
  • 1
  • 2
6

ProgressValue is double use value from 0 to 1

Vitaliy
  • 69
  • 1