Я использую элемент управления ProgressBar в приложении WPF, и я получаю эту старую вещь Windows 3.1 ProgressBlocks. В VB6 было свойство отображать гладкий ProgressBar. Есть ли такая вещь для WPF?
Гладкий ProgressBar в WPF
Ответы (4)
Эта статья базы знаний объясняет, что вы ищете... есть ссылка на VB версия статьи тоже.
Я не смог найти прямого решения для этого. Но я нашел кое-что еще лучше. В 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#)
Я не уверен, что вы хотите сделать. Если вам просто нужен индикатор выполнения, который «двигается» из стороны в сторону, как при запуске Vista, вы можете использовать: IsIndetermined = true.
Если вы действительно хотите перейти от 0% к 100%, вам нужно либо анимировать значение, как показано в этом примере на msdn: http://msdn.microsoft.com/en-us/library/system.windows.controls.progressbar.aspx или задайте значение явно либо в коде программной части (скорее всего, от фонового работника), либо через привязку к изменяющемуся значению.
Тем не менее, WPF ProgressBar всегда должен быть «гладким», существует вероятность того, что пользовательский интерфейс по умолчанию будет использовать более простую версию через подключение к удаленному рабочему столу.
Недавно меня раздражало появление моих индикаторов выполнения в XP после разработки в Vista. Я не хотел пробовать варианты загрузки стилей Vista из dll, которые я видел, но эта статья дала мне именно то, что я искал. внешний вид перспективы - нет новых классов. Плюс у него есть стеклянная подсветка на таймере. В статье нет картинок, но она выглядит точно так же, как ProgressBar в Vista.