Wpf - Control ProgressBar con el porcentaje

Descripción general

Codigo para un sencillo control Progressbar que muestra en el centro el porcentaje realizado

[TOC] Tabla de Contenidos

El codigo que se muestra en este documento es un control ProgressBar que muestra centrado en el control la cantidad de porcentaje que muestra la barra de progreso, algo aprecido a esto.

Falta el texto Alt de la imagen


↑↑↑

Codigo xaml

<UserControl x:Class="UC_ProgressBarConPorcentaje"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             MinHeight="20"
             mc:Ignorable="d" 
             d:DesignHeight="30" d:DesignWidth="300">


    <Grid x:Name="GridProgressBarConPorcentaje" 
          HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >

        <ProgressBar x:Name="ProgressBarBarra"                                  
                     HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  
                     Background="#FFABF7E9" 
                     Value="{Binding ZProgressBarValor, 
                             RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />

        <TextBlock   HorizontalAlignment="Center" VerticalAlignment="Center" 
                     TextWrapping="NoWrap" 
                     FontFamily="Consolas"
                     Text="{Binding Value, ElementName=ProgressBarBarra, StringFormat=\{0:00.00\} %}" />

    </Grid>

</UserControl>


↑↑↑

y el código VB

''' <summary>
'''  Control de una barra de progreso que muestra en el centro el porcentaje realizado
''' </summary>
Public Class UC_ProgressBarConPorcentaje

    ' el valor de la barra de progreso
    ' la información se mueve al control por binding
    Public Shared ReadOnly ZProgressBarValorProperty As DependencyProperty =
        DependencyProperty.Register("ZProgressBarValor", GetType(System.String), GetType(UC_ProgressBarConPorcentaje),
                                    New FrameworkPropertyMetadata("0", FrameworkPropertyMetadataOptions.BindsTwoWayByDefault))

    ''' <summary>
    '''  Valor para la barra de progreso, propiedad value
    ''' </summary>
    Public Property ZProgressBarValor As String
        Get
            Return CType(GetValue(ZProgressBarValorProperty), String)
        End Get
        Set(value As String)
            SetValue(ZProgressBarValorProperty, value)
        End Set
    End Property

    ''' <summary>
    ''' Actualiza el valor de la barra de progreso con un valor Double
    ''' </summary>
    ''' <param name=value"></param>"
    Public Sub ZSetValorToInteger(ByVal value As Double)
        Dim numDouble As Double = Math.Round(numDouble, 2)
        Call ZSetValorToString(String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0}", numDouble))
    End Sub

    ''' <summary>
    ''' Actualiza el valor de la barra de progreso con un valor String
    ''' </summary>
    Public Sub ZSetValorToString(ByVal value As String)
        ZProgressBarValor = value
        '-------------------------------------------
        ' Actualizar el Binding ¡ahora mismo!
        Dim be As BindingExpression = GetBindingExpression(ZProgressBarValorProperty)
        If (Not (be) Is Nothing) Then
            be.UpdateSource()
        End If
    End Sub

End Class

↑↑↑

A.2.Enlaces

[Para saber mas]
[Grupo de documentos]
[Documento Index]
[Documento Start]
[Imprimir el Documento]
© 1997 - - La Güeb de Joaquín
Joaquín Medina Serrano
Ésta página es española

Codificación
Fecha de creación
Última actualización
[HTML5 Desarrollado usando CSS3]