由于在 XAML 中无法进行操作,因此转换器也是一种处理方法
我尝试为您编写一个简单的代码,使用字符串格式表示百分比通知StringFormat={}{0:P0}
XAML 示例
<StackPanel>
<StackPanel.Resources>
<l:ScaleConverter x:Key="ScaleConverter"/>
</StackPanel.Resources>
<Slider x:Name="calculationSource" Maximum="10000"/>
<TextBlock Text="{Binding ElementName=calculationSource,
Path=Value, StringFormat={}{0:P0},
Converter={StaticResource ScaleConverter},
ConverterParameter=10000}" />
</StackPanel>
为了方便演示,我使用滑块而不是进度条,您可以使用任何来源
在转换器参数中指定最大值
字符串格式的P0表示0精度的百分比格式,例如0%,可以选择P1为1位小数,以此类推,例如0.0%
转换器类
class ScaleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return System.Convert.ToDouble(value) / System.Convert.ToDouble(parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
转换器非常简单,将值除以定义的比例。
我希望它对您的问题有用
附加内容
此外,如果您希望在单个位置定义最大范围,您可以使用相同的资源
<StackPanel>
<StackPanel.Resources>
<l:ScaleConverter x:Key="ScaleConverter"/>
<sys:Double x:Key="maxRange">10000</sys:Double>
</StackPanel.Resources>
<Slider x:Name="calculationSource" Maximum="{StaticResource maxRange}"/>
<TextBlock Text="{Binding ElementName=calculationSource,
Path=Value, StringFormat={}{0:P0},
Converter={StaticResource ScaleConverter},
ConverterParameter={StaticResource maxRange}}" />
</StackPanel>