In this case we are using a WPF TaskbarItemInfo to show progress on an icon in the Taskbar. The taskbar progress value takes a double value between 0.0d and 1.0d. However, in this cae the progresss value is generated as an integer percentage between 0 and 100. So we create a converter class to convert our interger value between 0 and 100 to the double value. An alternative would be to create another property that creates the progress value in the appropriate form.
// Convert an integer percentage (0 to 100) to a double
// between (0.0d and 1.0d)
public class IntPercentageToDoubleConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
double res = 0.0d;
if (value is int)
{
int intVal = (int)value;
res = intVal / 100.0d;
if (res < 0.0d)
res = 0.0d;
else if (res > 100.0d)
res = 100.0d;
}
return res;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return null;
}
}
In the Xaml we first need to create an instance of the converter. A few namespace declarations are required:
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:PhotoBackupApp.ViewModel"Create the converter instance:
<Window.Resources>
<local:IntPercentageToDoubleConverter x:Key="intPercentageToDoubleConverter" />
</Window.Resources>
Use the converter with the bound proprety
<Window.TaskbarItemInfo>
<TaskbarItemInfo ProgressValue="{Binding Mode=OneWay,
Path=ProgressPercentage,
Converter={StaticResource intPercentageToDoubleConverter},
UpdateSourceTrigger=PropertyChanged}"
ProgressState="Normal" />
</Window.TaskbarItemInfo>
The 2 important declarartions here are 'Path=ProgressPercentage, Converter={StaticResource intPercentageToDoubleConverter},'. This is the property to bind to and the converter instance to use.
No comments:
Post a Comment