Ookii-dialogs-wpf: рдкреНрд░реЛрдЧреНрд░реЗрд╕рдбрд┐рдЕрд▓реЙрдЧ рдХреЛ рдкреНрд░реЛрдЧреНрд░реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП<t/>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдорд╛рд░реНрдЪ 2020  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ookii-dialogs/ookii-dialogs-wpf

рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░реЗрд╕рдбрд┐рдЕрд▓реЙрдЧ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛:

рдкреНрд░рдЧрддрд┐ рдкреНрд░рддрд┐рд╢рдд рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП System.IProgress<int>
System.IProgress<Text> рдкрд╛рдареНрдп рдкреНрд░рдЧрддрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рддреЛ рдкреНрд░реЛрдЧреНрд░реЗрд╕рдбрд┐рдЕрд▓реЙрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЪрд▓ рд░рд╣реА рдиреМрдХрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рджреЗ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рдЧрддрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП IProgress<int> рдФрд░ IProgress<Text> рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

enhancement help wanted

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдзрдиреНрдпрд╡рд╛рдж @vpenades , рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкрд░ рд╡рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдкреАрдЖрд░ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рдореИрдВ рдЗрд╕реЗ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрдж рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛ред

рдЬрдирд╕рдВрдкрд░реНрдХ рддреИрдпрд╛рд░...

@vpenades Ookii.Dialogs.Wpf рдЕрдм .NET 5 рдХреЗ рд╕рд╛рде-рд╕рд╛рде .NET Core 3.1 рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рдХрднреА рднреА IProgress<T> рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрдзрд╛рд░реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдкрд┐рдВрдЧ рдХрд░реВрдВрдЧрд╛ред

ps: рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдорд╣рд╕реВрд╕ рди рдХрд░реЗрдВред рдЗрд╕рдореЗрдВ рдЖрдкрдХреА рдкреВрд░реНрд╡ рд░реБрдЪрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рджреЛрд╕реНрддрд╛рдирд╛ рдкрд┐рдВрдЧ рд╣реИред

рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдСрдмреНрдЬреЗрдХреНрдЯ рд╡реИрд▓реНрдпреВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдП рдЧрдП рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ IProgress<T> рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдмреИрдХрдЧреНрд░рд╛рдВрдб рдХрд╛рд░реНрдп рдХреА рдкреНрд░рдЧрддрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХреЗрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдкреНрд░рд╕рд┐рджреНрдз рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ IProgress<T> рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реА рдЦреЛрдЬ рдХреА рдХрд┐ рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдореИрдВрдиреЗ рдкрд╛рдпрд╛:

```рд╕реА#
рдЖрдИ рдкреНрд░реЛрдЧреНрд░реЗрд╕// рдкреНрд░рдЧрддрд┐ 0-1 . рдХреЗ рдмреАрдЪ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ
рдЖрдИ рдкреНрд░реЛрдЧреНрд░реЗрд╕// рдкреНрд░рдЧрддрд┐ 0-100 . рдХреЗ рдмреАрдЪ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ


It is very tempting to have a structure that keeps all the information required by the progress dialog (percent, text, description), but this _must be avoided_  because that would mean the caller needs to fill that structure, which would force it to have a dependency on the ookii library, this is probably not desirable for background tasks, or pure code libraries that don't want to depend on an UI library.

So, in order to pass rich progress information, we need to use only BCL types and collections. Unfortunately, `IProgress<T>` does not define a standard....   but in general I guess everybody will expect (int Percent, string Text, string Description)

So, I would propose adding these interfaces:

```c#
IProgress<float> // by far, the implementation I've found most occurences searching on github.
IProgress< KeyValuePair<string,object> > // where key is the name of the property to set (percent, text, desc)

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╡рд░реНрддрдорд╛рди IProgress<INT> рдФрд░ IProgress<STRING> рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рд╡реЗ рдкрд░рд╕реНрдкрд░ рдЕрдирдиреНрдп рдирд╣реАрдВ рд╣реИрдВ; рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рдЧрддрд┐ рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрд╛рда рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рддреЛ рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдЕрдиреНрдп рд╕рдВрдкрддреНрддрд┐ рдкрд░ рдкрд┐рдЫрд▓реА рдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореВрд▓реНрдп рдХреЛ рдЦреЛрдП рдмрд┐рдирд╛ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕