WPF中的Smooth ProgressBar

时间:2008-09-17 12:06:06

标签: c# wpf progress-bar

我在WPF应用程序中使用ProgressBar控件,而我正在使用旧的Windows 3.1 Progress Blocks 。在VB6中,有一个属性可以显示 smooth ProgressBar。 WPF有这样的东西吗?

4 个答案:

答案 0 :(得分:4)

This知识库文章似乎解释了你在寻找什么...这篇文章的VB版本也有链接。

答案 1 :(得分:2)

我无法为此找到直接解决方案。但我发现了更好的东西。在WPF中,您可以使用Windows主题。我正在使用Windows XP,并在我的WPF应用程序上安装Vista-Aero Theme,使所有控件看起来像Vista-Aero。

这是代码......

转到Application.xaml.vb并写入...

  Enum appThemes
        Aero
        Luna
        LunaMettalic
        LunaHomestead
        Royale
    End Enum

Private Sub Application_Startup(ByVal sender As Object, ByVal e As System.Windows.StartupEventArgs) Handles Me.Startup

        setTheme(appThemes.Aero)

    End Sub

    ''' <summary>
    ''' Function to set the default theme of this application
    ''' </summary>
    ''' <param name="Theme">
    ''' Theme of type appThemes
    ''' </param>
    ''' <remarks></remarks>
    Public Sub setTheme(ByVal Theme As appThemes)

        Dim uri As Uri

        Select Case Theme
            Case appThemes.Aero
                ' Vista Aero Theme
                uri = New Uri("PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component\\themes/Aero.NormalColor.xaml", UriKind.Relative)

            Case appThemes.Luna
                ' Luna Theme
                uri = New Uri("PresentationFramework.Luna;V3.0.0.0;31bf3856ad364e35;component\\themes/Luna.NormalColor.xaml", UriKind.Relative)

            Case appThemes.LunaHomestead
                ' Luna Mettalic
                uri = New Uri("PresentationFramework.Luna;V3.0.0.0;31bf3856ad364e35;component\\themes/Luna.Metallic.xaml", UriKind.Relative)

            Case appThemes.LunaMettalic
                ' Luna Homestead
                uri = New Uri("PresentationFramework.Luna;V3.0.0.0;31bf3856ad364e35;component\\themes/Luna.Homestead.xaml", UriKind.Relative)

            Case appThemes.Royale
                ' Royale Theme
                uri = New Uri("PresentationFramework.Royale;V3.0.0.0;31bf3856ad364e35;component\\themes/Royale.NormalColor.xaml", UriKind.Relative)

        End Select

        ' Set the Theme
        Resources.MergedDictionaries.Add(Application.LoadComponent(uri))

    End Sub

(我希望你能把它转换成C#)

答案 2 :(得分:0)

我不确定你想做什么。 如果您只是想在启动Vista时从左右扫描“进度条”,则可以使用:IsIndetermined = true。

如果您确实希望从0%变为100%,则必须为该值设置动画,如msdn:http://msdn.microsoft.com/en-us/library/system.windows.controls.progressbar.aspx上的此示例所示 或者在代码隐藏中显式设置值(很可能是从后台工作者)或通过绑定到更改的值。

然而,WPF ProgressBar应始终“平滑”,UI可能会通过RemoteDesktop连接默认为更简单的版本。

答案 3 :(得分:0)

在Vista上开发后,我最近对XP上的进度条的出现感到恼火。我不想尝试从dll中加载Vista样式的建议,但是this article给了我正在寻找的东西。远景外观 - 没有新课程。此外,它还具有计时器上的玻璃亮点。文章上没有图片,但它看起来就像Vista的ProgressBar。