Гладкий ProgressBar в WPF

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


person Daren Thomas    schedule 17.09.2008    source источник
comment
Не ответ, а тема индикаторов выполнения и бесперебойной работы, вот хорошая статья о различных функциях: chrisharrison.net/projects/progressbars/ProgBarHarrison.pdf   -  person Tom Ritter    schedule 17.09.2008


Ответы (4)


Эта статья базы знаний объясняет, что вы ищете... есть ссылка на VB версия статьи тоже.

person xan    schedule 17.09.2008
comment
Ой. Ну, по крайней мере, это говорит: так больше нельзя! К сожалению, само решение немного минималистично — я серьезно сомневаюсь, что оно будет работать с анимацией. Однако, спасибо. - person Daren Thomas; 17.09.2008
comment
Это решение WinForms. В WPF вам нужно просто создать новый ControlTemplate для ProgressBar. - person Abe Heidebrecht; 17.09.2008

Я не смог найти прямого решения для этого. Но я нашел кое-что еще лучше. В 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#)

person Community    schedule 26.06.2009

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

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

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

person GaussZ    schedule 17.09.2008

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

person Thomas    schedule 17.09.2008
comment
mattserbinski.com/blog/look-and-feel-progressbar получить ProgressBarExamples. zip, в Window1.xaml есть styleProgressBarVista, который вы можете извлечь в свой xaml, или ResourceDictionary - person Thomas; 10.08.2010