首页 > 其他分享 >WPF Progress 样式

WPF Progress 样式

时间:2023-03-15 19:33:44浏览次数:43  
标签:github 样式 ProgressBar 进度 Progress WPF 加载

一、前言

滚动条一般用于加载进度,我们在看视频的时候或者在浏览网页的时候经常能看到加载进度的页面。在程序开发中,默认的进度加载样式可能跟程序风格不太一样,或者加载进度的时候需要更改一下加载的样式。这个时候就需要通过修改ProgressBar的样式来实现。

二、ProgressBar的基本样式

ProgressBar的基本样式很简单:

复制代码
  <Style TargetType="{x:Type ProgressBar}">
            <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
            <Setter Property="SnapsToDevicePixels" Value="True"/>
            <Setter Property="Height" Value="15"/>
            <Setter Property="Background" Value="#6fae5f"/>
            <Setter Property="FontSize" Value="10"/>
            <Setter Property="Padding" Value="5,0"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ProgressBar}">
                        <Grid Background="#00000000">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>
                            <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="CommonStates">
                                    <VisualState x:Name="Determinate"/>
                                    <VisualState x:Name="Indeterminate">
                                        <Storyboard RepeatBehavior="Forever">
                                            <PointAnimationUsingKeyFrames Storyboard.TargetName="Animation" Storyboard.TargetProperty="(UIElement.RenderTransformOrigin)">
                                                <EasingPointKeyFrame KeyTime="0:0:0" Value="0.5,0.5"/>
                                                <EasingPointKeyFrame KeyTime="0:0:1.5" Value="1.95,0.5"/>
                                                <EasingPointKeyFrame KeyTime="0:0:3" Value="0.5,0.5"/>
                                            </PointAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
                           
                            <Grid Height="{TemplateBinding Height}">
                                <Border Background="#000000" CornerRadius="7.5" Opacity="0.05"/>
                                <Border BorderBrush="#000000" BorderThickness="1" CornerRadius="7.5" Opacity="0.1"/>
                                <Grid Margin="{TemplateBinding BorderThickness}">
                                    <Border x:Name="PART_Track"/>
                                    <Grid x:Name="PART_Indicator" ClipToBounds="True" HorizontalAlignment="Left" >
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition x:Name="width1"/>
                                            <ColumnDefinition x:Name="width2" Width="0"/>
                                        </Grid.ColumnDefinitions>
                                        <Grid x:Name="Animation"  RenderTransformOrigin="0.5,0.5">
                                            <Grid.RenderTransform>
                                                <TransformGroup>
                                                    <ScaleTransform ScaleY="-1" ScaleX="1"/>
                                                    <SkewTransform AngleY="0" AngleX="0"/>
                                                    <RotateTransform Angle="180"/>
                                                    <TranslateTransform/>
                                                </TransformGroup>
                                            </Grid.RenderTransform>
                                            <Border Background="{TemplateBinding Background}" CornerRadius="7.5">
                                                <Viewbox HorizontalAlignment="Left" StretchDirection="DownOnly" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="True">
                                                    <TextBlock Foreground="#ffffff" SnapsToDevicePixels="True" FontSize="{TemplateBinding FontSize}" VerticalAlignment="Center" Text="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Value,StringFormat={}{0}%}" RenderTransformOrigin="0.5,0.5">
                                                        <TextBlock.RenderTransform>
                                                            <TransformGroup>
                                                                <ScaleTransform ScaleY="1" ScaleX="-1"/>
                                                                <SkewTransform AngleY="0" AngleX="0"/>
                                                                <RotateTransform Angle="0"/>
                                                                <TranslateTransform/>
                                                            </TransformGroup>
                                                        </TextBlock.RenderTransform>
                                                    </TextBlock>
                                                </Viewbox>
                                            </Border>
                                            <Border BorderBrush="#000000" BorderThickness="1" CornerRadius="7.5" Opacity="0.1"/>
                                        </Grid>
                                    </Grid>
                                </Grid>
                            </Grid>
                        </Grid>
                        <ControlTemplate.Triggers>
                            
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Background" Value="#c5c5c5"/>
                            </Trigger>
                            <Trigger Property="IsIndeterminate" Value="true">
                                <Setter TargetName="width1" Property="Width" Value="0.25*"/>
                                <Setter TargetName="width2" Property="Width" Value="0.725*"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
复制代码

引用示例:

<ProgressBar Height="15" Width="150" Value="40" Margin="10"/>

显示效果:

所有代码已经上传到github:https://github.com/cmfGit/WpfDemo.git

标签:github,样式,ProgressBar,进度,Progress,WPF,加载
From: https://www.cnblogs.com/lzjsky/p/17219709.html

相关文章

  • WPF MenuItem 样式
    一、前言默认的MenuItem样式比较普通,这次自定义MenuItem的样式也只是对MenuItem的颜色风格进行变化。需要其他功能的变化,大家可以根据样式代码进行扩展。MenuItem的样式......
  • WPF 实现界面动态布局
    参考:WPF实现界面动态布局-码农教程(manongjc.com)【翻译】使用WPF进行拖拽和放置【DragandDropinWPF】-LiuHong'sBlog(lofter.com)......
  • 【ArcPy】输出Samples工具箱样式的面坐标txt文件
    基于ArcGIS10.1,别有用处。importarcpylyr=file=r"C:\Users\dell\Desktop\dapo.txt"withopen(file,'w')astxt:txt.write('Polygon\r\n')witharcpy.da.......
  • WPF TreeView 样式
    一、前言TreeView控件在项目中使用比较频繁,普通的TreeView并不能满足我们的需求。因此我们需要滴对TreeView进行改造。下面的内容将介绍仿QQ联系人TreeView样式及TreeView......
  • 解决再次安装Fidder报错:Machine-wide Progress Telerik Fiddler Classic installatio
    1、win+R,输入regedit打开注册表2、找到HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Fiddler2,右键删除3、找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fiddler2,右......
  • VUE基础:组件CSS样式、props属性
    VUE基础部分组件css样式例子<stylelang="less">//这里记得改名,然后给div也加名字.comName-container{padding:1020px20px;background-color:lightskyblue......
  • New!界面控件DevExpress WPF 2023产品路线图曝光
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专......
  • WPF Binding属性
    Binding可以让前台和后台的属性绑定在一起。实现实时更新。比如前台xaml<StackPanel><TextBoxx:Name="txtBox"BorderBrush="Black"Margin="5"/>......
  • 覆盖element-ui原生样式
    使用深度选择器/deep/进行作用域穿透,不需要去掉style 标签 scoped 属性。只需要在父类class下的element-ui组件class前加上/deep/,就可以修改默认样式如下所示改变原......
  • element-table 相关样式修改
    1.表格整体背景色修改/*表格整体背景色*/::v-deep.el-table,::v-deep.el-table__expanded-cell{background-color:transparent!important;}2.表格内tr......