2008-09-17 106 views
6

我在WPF應用程序中使用ProgressBar控件,並且我得到這個舊的Windows 3.1 Progress Blocks的東西。在VB6中,有一個屬性顯示平滑的 ProgressBar。 WPF有這樣的事嗎?WPF中的平滑ProgressBar

+0

不是一個答案,但關於進度條和流暢操作的話題,這裏是關於不同功能的很好的論文:http://www.chrisharrison.net/projects/progressbars/ProgBarHarrison.pdf – 2008-09-17 12:11:10

回答

4

This知識庫文章似乎解釋了你在找什麼...還有一個VB版本的文章的鏈接。

+0

哦。至少是說:「你不能那樣做了!」。可悲的是,解決方案本身有點簡約 - 我認真地懷疑它會與動畫一起工作。不過謝謝你。 – 2008-09-17 12:13:03

+0

這是一個WinForms解決方案。在WPF中,您應該爲ProgressBar創建一個新的ControlTemplate。 – 2008-09-17 18:34:05

0

我不確定你想要做什麼。 如果你只是想要一個像掃描Vista一樣「掃掠」的進度條,你可以使用:IsIndetermined = true。

如果你真的想從0%到去你必須要麼動畫在值顯示在MSDN上的這個例子中100%:http://msdn.microsoft.com/en-us/library/system.windows.controls.progressbar.aspx 或設定值明確無論是在代碼隱藏(最有可能從後臺工人)或通過綁定到一個不斷變化的值。

儘管如此,WPF ProgressBar應該始終是「平滑」的,但是有可能通過RemoteDesktop連接將UI默認爲更簡單的版本。

0

在Vista上開發後,最近我在XP上進度條的出現讓我很惱火。我不想嘗試我看到的用於加載Vista的風格的建議,但this article給了我我正在尋找的東西。遠景 - 沒有新課程。另外它還有定時器上的玻璃亮點。文章中沒有圖片,但它看起來就像Vista的ProgressBar。

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