You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WinUI 3中修改ProgressBarTrackHeight的高度?

修改WinUI 3中ProgressBar的ProgressBarTrackHeight高度

你可以通过两种方式修改ProgressBar的轨道高度:

方法一:重写系统资源

WinUI 3的ProgressBar轨道高度由系统资源ProgressBarTrackHeight定义,直接在页面或应用的资源字典中重写该资源即可:

<Page.Resources>
    <!-- 设置轨道高度为10,可根据需求调整数值 -->
    <x:Double x:Key="ProgressBarTrackHeight">10</x:Double>
</Page.Resources>

<ProgressBar Width="130" Value="30" />

这种方法最简单,无需修改完整样式,所有引用该资源的ProgressBar都会自动应用新高度。

方法二:自定义ProgressBar样式

如果需要更精细的控制(比如同时调整进度条高度、圆角等),可以自定义ProgressBar的完整样式,修改轨道部分的高度:

<Page.Resources>
    <Style TargetType="ProgressBar">
        <Setter Property="Foreground" Value="{ThemeResource ProgressBarForegroundBrush}" />
        <Setter Property="Background" Value="{ThemeResource ProgressBarBackgroundBrush}" />
        <Setter Property="BorderBrush" Value="{ThemeResource ProgressBarBorderBrush}" />
        <Setter Property="BorderThickness" Value="{ThemeResource ProgressBarBorderThemeThickness}" />
        <Setter Property="Minimum" Value="0" />
        <Setter Property="Maximum" Value="100" />
        <Setter Property="Value" Value="0" />
        <!-- 可直接设置ProgressBar整体高度,或在模板内修改轨道高度 -->
        <Setter Property="Height" Value="15" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="Padding" Value="{ThemeResource ProgressBarPadding}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ProgressBar">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Determinate" />
                                <VisualState x:Name="Indeterminate">
                                    <Storyboard>
                                        <DoubleAnimation Storyboard.TargetName="IndeterminateRoot" Storyboard.TargetProperty="Opacity" To="1" Duration="0" />
                                        <DoubleAnimation Storyboard.TargetName="DeterminateRoot" Storyboard.TargetProperty="Opacity" To="0" Duration="0" />
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Grid x:Name="DeterminateRoot" Opacity="1">
                            <!-- 此处直接修改Track的Height属性 -->
                            <Border x:Name="Track" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{ThemeResource ProgressBarCornerRadius}" Height="12" />
                            <Border x:Name="Progress" Background="{TemplateBinding Foreground}" CornerRadius="{ThemeResource ProgressBarCornerRadius}" Margin="{TemplateBinding Padding}" HorizontalAlignment="Left" Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value, Converter={StaticResource ProgressBarValueConverter}}" />
                        </Grid>
                        <Grid x:Name="IndeterminateRoot" Opacity="0">
                            <Border x:Name="IndeterminateTrack" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{ThemeResource ProgressBarCornerRadius}" />
                            <Border x:Name="IndeterminateProgress" Background="{TemplateBinding Foreground}" CornerRadius="{ThemeResource ProgressBarCornerRadius}" Margin="{TemplateBinding Padding}">
                                <Animation.AnimationMixer>
                                    <ScalarAnimationMixer Target="Opacity" Duration="0:0:2" RepeatBehavior="Forever">
                                        <KeyFrame Time="0" Value="0.5" />
                                        <KeyFrame Time="0:0:1" Value="1" />
                                        <KeyFrame Time="0:0:2" Value="0.5" />
                                    </ScalarAnimationMixer>
                                </Animation.AnimationMixer>
                                <Rectangle x:Name="IndeterminateBar" Fill="{TemplateBinding Foreground}" CornerRadius="{ThemeResource ProgressBarCornerRadius}">
                                    <Animation.AnimationMixer>
                                        <ScalarAnimationMixer Target="TranslateTransform.X" Duration="0:0:1.5" RepeatBehavior="Forever">
                                            <KeyFrame Time="0" Value="-100" />
                                            <KeyFrame Time="0:0:1.5" Value="300" />
                                        </ScalarAnimationMixer>
                                    </Animation.AnimationMixer>
                                    <Rectangle.RenderTransform>
                                        <TranslateTransform />
                                    </Rectangle.RenderTransform>
                                </Rectangle>
                            </Border>
                        </Grid>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Page.Resources>

<ProgressBar Width="130" Value="30" />

在这个自定义样式中,你可以直接修改Track元素的Height属性,或者调整ProgressBar的整体Height来达到需求。

内容的提问来源于stack exchange,提问作者jasonzs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:31:30