【问题标题】:Smooth ProgressBar in WPFWPF 中的平滑进度条
【发布时间】:2008-09-17 12:06:05
【问题描述】:

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

【问题讨论】:

标签: c# wpf progress-bar


【解决方案1】:

This KB 文章似乎解释了您要查找的内容...还有指向该文章的 VB 版本的链接。

【讨论】:

  • 哦。至少是说:“你不能再那样做了!”。可悲的是,解决方案本身有点简约——我严重怀疑它是否适用于动画。不过,谢谢。
  • 这是一个 WinForms 解决方案。在 WPF 中,您应该为 ProgressBar 创建一个新的 ControlTemplate。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我不确定你想做什么。 如果您只是想要一个像启动 Vista 一样从一侧“扫描”到另一侧的进度条,您可以使用:IsIndetermined = true。

    如果您真的想从 0% 变为 100%,则必须对值进行动画处理,如 msdn 上的此示例所示:http://msdn.microsoft.com/en-us/library/system.windows.controls.progressbar.aspx 或者在代码隐藏中(很可能来自后台工作人员)或通过绑定到不断变化的值来显式设置值。

    尽管如此,WPF ProgressBar 应该始终“流畅”,但 UI 可能会通过 RemoteDesktop 连接默认为更简单的版本。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多