C# WPF ProgressBar controltemplate如何绑定模板背景

C# WPF ProgressBar controltemplate如何绑定模板背景,c#,wpf,binding,controltemplate,valueconverter,C#,Wpf,Binding,Controltemplate,Valueconverter,简单地说,我有一个进度条作为电池指示器 我想做一个非常小的模板覆盖 电池的背景应根据电池电量范围而变化 实际进度条绑定到我的viewmodel中名为BatteryLevel的整数值 然后将其传递到转换器以返回背景 问题是…ControlTemplate中的绑定没有更改边框的背景颜色 它实际上保持空白,可能为空…不确定 我的问题:将PART_指示器绑定到ProgressBar的背景需要什么 这是我覆盖模板的代码 <ProgressBar Name="_batterystat" Backgro

简单地说,我有一个进度条作为电池指示器

我想做一个非常小的模板覆盖

电池的背景应根据电池电量范围而变化

实际进度条绑定到我的viewmodel中名为BatteryLevel的整数值

然后将其传递到转换器以返回背景

问题是…ControlTemplate中的绑定没有更改边框的背景颜色

它实际上保持空白,可能为空…不确定

我的问题:将PART_指示器绑定到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();
        }
    }

只是尝试了一个简单的演示,该模板工作良好。如果为ProgressBar的背景设置其他笔刷值,您将看到它可以工作。所以这只是将背景绑定到BatteryLevel的问题。你应该再检查一遍。国王-谢谢。你完全正确。像个白痴一样,我从不绑定VALUE属性。显然,如果我不设置这个值,我不会看到背景的变化。呃……你的评论让我明白了这一点。你想加上这个作为答案,我会接受吗?不,谢谢,我觉得这个答案太简单了,这只是一个小小的错误,简单得像一个打字错误:足够公平。再次感谢。