2010-05-29 17 views
29

Mencioné que no hay un control ocupado estándar en WPF. Entonces, ¿cuál es la forma más fácil de mostrar el círculo animado ocupado (no la barra de progreso) como el que muestra el navegador al cargar una página?Manera más simple de crear animación ocupada en WPF

Por favor, si sugiere descargar el control de Internet, asegúrese de que este control sea gratis y sin restricciones de licencia (como si me obligara a utilizar mi aplicación GPL si la utilizo).

gracias de antemano

Respuesta

18

También hay Sacha Barber Circular Progress Bar. Está licenciado bajo Code Project Open License.

+0

Siempre me han gustado sus artículos de proyectos de código. –

+1

Esto ahora se ha eliminado del proyecto de código –

+2

Probablemente se trasladó a http://www.codeproject.com/Articles/49853/Better-WPF-Circular-Progress-Bar – quetzalcoatl

0

Recientemente implementé uno que se parece al indicador de ocupado iPhone, explicó here.

+0

Gira un archivo png. En realidad no dibujando. Lo cual, para mí, quita la ventaja de WPF donde todo se dibuja y se ve sin problemas en cualquier escala. –

+0

@ClintStLaurent No todo tiene que estar basado en vectores en WPF. En este caso, la creación de imágenes es más sencilla de implementar y, como beneficio adicional, es más eficiente que los gráficos vectoriales. Sin embargo, el punto principal de esta técnica fue cambiar la velocidad de la animación para hacer que el aspecto visual sea "estático".Así que puedes ciertamente 1) elegir una imagen diferente para tu caso de uso, 2) cambiar la Imagen con una Ruta si así lo deseas. La misma técnica se aplicaría. –

7

También puede usar gifs animados, comparar, p. este sitio: http://www.loadinfo.net/. Se generan diferentes colores, formas, cuadros por segundo, fondo transparente.

Luego agrega el WPF Animated GIF como referencia a su proyecto.

Hacer un control de usuario con <Image gif:ImageBehavior.AnimatedSource="Images/animated.gif" /> como su contenido y dar la usercontrol un DependencyProperty (DP) IsBusy con una devolución de llamada a un método en el control de usuario:

`public static readonly DependencyProperty IsBusyProperty = DependencyProperty.Register("IsBusy", typeof(bool), typeof(SpinProgress), new FrameworkPropertyMetadata(new PropertyChangedCallback(OnIsBusyChangedCallBack)));` 

En este método Play() y 'Pausa del gif animado () 'los métodos se pueden ejecutar.
Enlaza la propiedad IsBusy de usercontrol con el modelo de vista.

O - cuando apropiado - ignorar la DP y los métodos Play() y Pause() y enlazar la propiedad Visibility a la vista-modelo.

+0

¿Puedes explicar en detalle con un código de muestra? – m2pathan

3

Recientemente subí una a codeplex. Le permite personalizarlo (incluso en tiempo de ejecución). Puede descargarlo desde here. Muestra de demostración también cargada.

Cuestiones relacionadas