2008-09-17 21 views
6

Estoy usando el control ProgressBar en una aplicación WPF y obtengo este antiguo, Windows 3.1 Progress Bloqueos cosa. En VB6, había una propiedad para mostrar lisa ProgressBar. ¿Hay algo así para WPF?Smooth ProgressBar en WPF

+0

No es una respuesta, pero sobre el tema de las barras de progreso y el buen funcionamiento, aquí hay un buen documento sobre diferentes funciones: http://www.chrisharrison.net/projects/progressbars/ProgBarHarrison.pdf –

Respuesta

4

This artículo de KB parece explicar lo que está buscando ... también hay un enlace a una versión de VB del artículo.

+0

Oh. Bueno, al menos dice: "¡Ya no puedes hacer eso!". Lamentablemente, la solución en sí misma es un tanto minimalista; dudo mucho que funcione con animaciones. Gracias de cualquier forma. –

+0

Esa es una solución de WinForms. En WPF, solo debe crear una nueva Plantilla de Control para ProgressBar. –

0

No estoy seguro de lo que quiere hacer. Si simplemente desea una barra de progreso que "barre" de un lado a otro como al iniciar Vista, podría usar: IsIndetermined = true.

Si realmente se quiere ir del 0% al 100% lo que tiene que sea animar sobre el valor como se muestra en este ejemplo en MSDN: http://msdn.microsoft.com/en-us/library/system.windows.controls.progressbar.aspx o establecer el valor de forma explícita, ya sea en el código subyacente (muy probablemente de un fondo trabajador) o mediante un enlace a un valor cambiante.

Sin embargo, la ProgressBar de WPF siempre debe ser "suave", existe la posibilidad de que la interfaz de usuario adopte de forma predeterminada una versión más simple a través de una conexión de Escritorio remoto.

0

Recientemente me molestó la apariencia de mis barras de progreso en XP después de desarrollar en Vista. No quería probar las sugerencias que había visto para cargar los estilos de Vista de dll, pero this article me dio justo lo que estaba buscando. aspecto de vista - no hay clases nuevas. Además tiene el brillo vidrioso en un temporizador. No hay imágenes en el artículo, pero se parece a ProgressBar de Vista.

+0

su enlace no funciona? – nabeelfarid

+0

http://mattserbinski.com/blog/look-and-feel-progressbar obtener ProgressBarExamples.zip, en Window1.xaml hay un styleProgressBarVista que se puede extraer en su xaml, o una ResourceDictionary – Thomas

2

No he podido encontrar una solución directa para esto. Pero encontré algo aún mejor. En WPF, puede usar Temas de Windows. Estoy usando Windows XP y teniendo Vista-Aero Theme en mi aplicación WPF, haciendo que todos los controles se vean como Vista-Aero.

Aquí está el código ...

Ir a Application.xaml.vb y escribir ...

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 

(espero que se puede convertir a C#)