【问题标题】:Problem with IsIndeterminate while trying to put together a ProgressBar XAML template尝试将 ProgressBar XAML 模板放在一起时出现 IsIndeterminate 问题
【发布时间】:2010-01-12 14:05:34
【问题描述】:

我正在为 WPF ProgressBar 创建一个 XAML 模板。如果将 IsIndeterminate 设置为 False,则以下 XAML 代码可以正常工作:

<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>

指标边框从最小到最大填充了ProgressBar。但是,如果我将IsIndeterminate 设置为True,则指示器边框会填满整个ProgressBar(就像它设置为最大值一样)并且根本没有动画。我尝试过的任何事情都没有改变ProgressBar 的这种行为。 我需要做什么才能获得类似于标准 WPF ProgressBar 中的 IsIndeterminate 动画?

提前致谢

万岁

【问题讨论】:

  • 我有点迷茫,当 IsIndeterminate 为真时,你希望你的指示器边框做什么?
  • 动画应该像 Windows ProgressBars 中常见的那样从左到右来回运行。

标签: .net wpf xaml animation progress-bar


【解决方案1】:

ProgressBar 旨在在IsIndeterminate="true" 时显示整个指示器。 WPF 内置的ProgressBar 样式实际上会在IsIndeterminate="true" 时用动画画笔替换指示器颜色,以产生您正在观察的效果。你也可以这样做。只需在IsIndeterminate="true" 上使用属性触发器,然后将画笔设置为您正在制作动画的颜色的画笔。如果您想要不同的效果,另一种选择是创建由IsIndeterminate="true" 触发的单独动画。

您可以使用 NET Reflector 工具及其 BamlViewer 插件来查看内置样式。安装 Expression Blend(甚至是评估版)时,原始源文件也会复制到您的硬盘上,因此安装 Expression Blend 是查看内置样式的 XAML 的另一种方式。只需查看C:\Program Files\Microsoft Expression\Blend 2\SystemThemes 目录即可。

【讨论】:

  • 不客气!我很高兴它对你有用。您是否知道您可以将答案标记为正确,这会告诉其他人它是正确的,并且还会给回答者 15 点声望分?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 2021-01-10
  • 1970-01-01
相关资源
最近更新 更多