2008-09-17 7 views
6

Я использую элемент управления ProgressBar в приложении WPF, и я получаю этот старый, Windows 3.1 Progress Блоки вещь. В VB6 было свойство показать гладко ProgressBar. Есть ли такая вещь для WPF?Smooth ProgressBar в WPF

+0

не ответ, но по теме индикаторов прогресса и бесперебойной работы, вот хорошая статья о различных функциях: http://www.chrisharrison.net/projects/progressbars/ProgBarHarrison.pdf – 2008-09-17 12:11:10

ответ

4

This KB статья, кажется, объясняет, что вы ищете ... есть ссылка на версию статьи VB.

+0

Oh. Ну, по крайней мере, говорит: «Ты больше не можешь этого делать!». К сожалению, само решение немного для минимализма - я серьезно сомневаюсь, что он будет работать с анимацией. Однако, спасибо. – 2008-09-17 12:13:03

+0

Это решение WinForms. В WPF вы должны просто создать новый ControlTemplate для ProgressBar. – 2008-09-17 18:34:05

0

Я не уверен, что вы хотите сделать. Если вы просто хотите индикатор выполнения, который «подметается» из стороны в сторону, как при запуске Vista, вы можете использовать: IsIndetermined = true.

Если вы действительно хотите, чтобы перейти от 0% до 100%, вы должны либо анимировать по значению, как показано в этом примере на MSDN: http://msdn.microsoft.com/en-us/library/system.windows.controls.progressbar.aspx или установить значение в явном виде или в коде-за (скорее всего из фона работник) или путем привязки к изменяющейся стоимости.

Тем не менее WPF ProgressBar всегда должен быть «гладким», существует вероятность того, что пользовательский интерфейс будет по умолчанию более простой версией через соединение RemoteDesktop.

0

Недавно я был встревожен появлением моих баров прогресса на XP после разработки на Vista. Я не хотел попробовать предложения, которые я видел для загрузки стилей Vista из dll, но this article дал мне именно то, что я искал. внешний вид - никаких новых классов. Кроме того, он имеет стеклянную подсветку таймера. В этой статье нет фотографий, но выглядит так же, как Vista ProgressBar.

2

Мне не удалось найти прямое решение для этого. Но я нашел что-то еще лучше. В WPF вы можете использовать Темы Windows. Я использую Windows XP и имею тему Vista-Aero в своем приложении WPF, делая все элементы управления похожими на 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#)

Смежные вопросы