Плавная панель прогресса в WPF
-
01-07-2019 - |
Вопрос
Я использую элемент управления ProgressBar в приложении WPF, и я получаю этот старый прогресс Windows 3.1Блоки вещь.В VB6 было свойство показывать гладкий Панель прогресса.Есть ли такая вещь для WPF?
Решение
Это Статья KB, кажется, объясняет, что вы ищете...там же есть ссылка на 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 = истина.
Если вы действительно хотите перейти от 0% к 100%, вам нужно либо анимировать значение, как показано в этом примере в msdn: http://msdn.microsoft.com/en-us/library/system.windows.controls.progressbar.aspx или установите значение явно либо в коде (скорее всего, от фонового рабочего), либо через привязку к изменяющемуся значению.
Тем не менее, панель выполнения WPF всегда должна быть "гладкой", существует вероятность того, что пользовательский интерфейс по умолчанию будет использовать более простую версию через подключение к удаленному рабочему столу.
Недавно я был раздражен появлением моих индикаторов выполнения в XP после разработки в Vista.Я не хотел пробовать предложения, которые я видел для загрузки стилей Vista из dll, но эта статья дал мне именно то, что я искал.внешний вид vista - новых классов нет.Кроме того, он имеет стеклянную подсветку по таймеру.В статье нет картинок, но она выглядит точно так же, как панель прогресса Vista.