Гладкий ProgressBar в WPF - PullRequest
       32

Гладкий ProgressBar в WPF

6 голосов
/ 17 сентября 2008

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

Ответы [ 4 ]

4 голосов
/ 17 сентября 2008

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

2 голосов
/ 26 июня 2009

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

0 голосов
/ 17 сентября 2008

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

0 голосов
/ 17 сентября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...