简单地说,我有一个充当电池指示器的进度条。
我想做一个非常小的模板覆盖。
电池的背景应根据电池电量范围而改变。
实际进度条绑定到我的viewmodel中名为BatteryLevel的整数值。
然后将其传递给Converter以返回背景。
问题是...... ControlTemplate中的绑定不会改变边框的背景颜色。
它实际上保持空白(可能为空......不确定)。
我的问题:能够将PART_Indicator绑定到ProgressBar背景
的必要条件以下是我的代码以覆盖模板。
<ProgressBar Name="_batterystat" Background="{Binding BatteryLevel, Converter={StaticResource BatteryLevelToColorConverter}}">
<ProgressBar.Template>
<ControlTemplate TargetType="{x:Type ProgressBar}">
<Grid>
<Border x:Name="PART_Track" Background="White" BorderBrush="{x:Null}" />
<Border HorizontalAlignment="Left" x:Name="PART_Indicator" Background="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}" BorderBrush="{x:Null}" />
</Grid>
</ControlTemplate>
</ProgressBar.Template>
</ProgressBar>
和转换器:
public class BatteryLevelToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var battLevel = System.Convert.ToInt32(value);
if (battLevel <= GlobalsService.BatterLevelCriticalSetting)
return new SolidColorBrush(Colors.Red);
if (battLevel <= GlobalsService.BatterLevelLowSetting)
return new SolidColorBrush(Colors.Yellow);
return new SolidColorBrush(Colors.Blue);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}