Laden...

[gelöst] Problem mit IsIndeterminate bei XAML-Template für ProgressBar

Letzter Beitrag vor 14 Jahren 2 Posts 1.674 Views
[gelöst] Problem mit IsIndeterminate bei XAML-Template für ProgressBar

Hallo zusammen

Ich versuche gerade ein Template für den WPF-ProgressBar zu schreiben. Folgendes Template funktioniert solange IsIndeterminate auf False steht:


<ControlTemplate x:Key="DefaultProgressBarTemplate" TargetType="{x:Type ProgressBar}">
        <ControlTemplate.Resources>
            <SolidColorBrush x:Key="SolidBorderBrush" Color="#767676" />
            <LinearGradientBrush x:Key="IndicatorBrush" StartPoint="0,0" EndPoint="1,0">
                <LinearGradientBrush.GradientStops>
                    <GradientStop Color="#BCCF64" Offset="0.5" />
                    <GradientStop Color="#E1FF77" Offset="0.0" />
                </LinearGradientBrush.GradientStops>
            </LinearGradientBrush>
        </ControlTemplate.Resources>
        <Grid MinHeight="14">
            <Border Name="PART_Track" CornerRadius="9" Background="Transparent" BorderBrush="{StaticResource SolidBorderBrush}" BorderThickness="1" SnapsToDevicePixels="True" />
            <Border Name="PART_Indicator" CornerRadius="9" Background="{StaticResource IndicatorBrush}" BorderBrush="{StaticResource SolidBorderBrush}" BorderThickness="1" HorizontalAlignment="Left" SnapsToDevicePixels="True" />
        </Grid>
    </ControlTemplate>

    <Style x:Key="{x:Type ProgressBar}" TargetType="{x:Type ProgressBar}">
        <Setter Property="OverridesDefaultStyle" Value="True" />
        <Setter Property="Template" Value="{StaticResource DefaultProgressBarTemplate}" />
    </Style>

und produziert den als Anhang hochgeladenen ProgressBar. Dabei wird die Indicator-Border von Min bis Max aufgezogen.

Sobald IsIndeterminate auf True gesetzt wird steht die Indicator-Border allerdings auf Max und füllt den ProgressBar komplett aus. Aller Versuche meinerseits hier erstmal irgendein anderes Verhalten zu erzeugen sind bisher fehlgeschlagen.
Was muss ich tun, um hier ein dem Standard-WPF-ProgressBar äquivalentes Verhalten zu erreichen, d.h. der Indicator soll hin-und-her wandern ? Eine Google-Suche hierzu hat auch nicht zu viel geführt.

Ciao und vielen Dank

banzai

2 + 2 = 5 for large values of 2

Habe das Problem gelöst - der ProgressBar zeigt bei IsIndeterminate=True einfach den gesamten Indicator an, d.h. man muss sich um die Animation selber kümmern.
Man setzt einen Property-Trigger auf IsIndeterminate und setzt dort einen animierten Brush. Alternativ lässt sich so auch jegliche andere Animation setzen falls der gewünschte Effekt komplexer wird.

2 + 2 = 5 for large values of 2