Wpf - Control StatusBar enlazado a una clase

Descripción general

He escrito una clase que devuelve un texto para usarlo en un control Wpf StatusBar y se me he preguntado ... si habría alguna manera de hacer un enlace de datos. Después de probar al final he encontrado la solución que es la que se muestra a continuación

[TOC] Tabla de Contenidos


↑↑↑

El código xaml

El código xaml

<Window x:Class="WindowPruebaStatus" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WindowPruebaStatus" Height="300" Width="368"> <Grid> <DockPanel xmlns:NamespaceUtilForm= "clr-namespace:WpfParteArchivosIneitor2013.Util.Formularios" HorizontalAlignment="Stretch" Name="DockPanelStatusBar" VerticalAlignment="Bottom"> <DockPanel.Resources> <NamespaceUtilForm:TextoParaBarraEstado x:Key="ObjetoTextoBarraEstado" /> </DockPanel.Resources> <StatusBar Height="25" Name="StatusBarJoaquin" HorizontalAlignment="Stretch" VerticalAlignment="Center" > <Image Source="/WpfParteArchivosIneitor2013;component/Images/ColorHS.png" /> <StatusBarItem Name="StatusBarNombreJoaqui" > <StatusBarItem.Content> <Binding Source="{StaticResource ObjetoTextoBarraEstado}" Path="GetText" /> <!--Content=" Joaquin 'jms32' Medina Serrano 1997 - 2013 "--> </StatusBarItem.Content> </StatusBarItem> </StatusBar> </DockPanel> </Grid> </Window>


↑↑↑

Una imagen del resultado

Imagen 01

Imagen 01. La fecha de incio coincide con la fecha del año actual

Imagen 02.

Imagen 02. La fecha de incio y la fecha del año actua son diferentesl


↑↑↑

La clase que genera el texto

Clase que genera el texto

Namespace Util.Formularios ''' <summary> ''' Compone un texto en la barra de estado ''' </summary> Public Class TextoParaBarraEstado ''' <summary> ''' El año base para hacer montar la cadena con los años ''' </summary> ''' <remarks> ''' En la cadena que devuelve la función hay uno o dos años ''' una cadena del tipo 2010- 2012 ''' Este año es el primer año a partir del que se empieza a contar ''' Si el valor es 2010 y estamos en el 2010 solo muestra el valor 2010 ''' pero si estamos en el año 2012 la cadena que muestra es 2010-2012 '''</remarks> Private Const AÑO_PARTIDA As Integer = 2012 ''' <summary> ''' Constructor ''' </summary> Public Sub New() ' no hacer nada End Sub ''' <summary> ''' Obtiene un texto para ser mostrado en la ''' barra de estado de un formulario ''' </summary> ''' <returns> ''' Devuelve una cadena del tipo "© Joaquin 'jms32' Medina Serrano 2007-2009" ''' </returns> Public ReadOnly Property GetText As String Get Return Text() End Get End Property '--------------------------------------------------- ' Texto para la barra de estado ' Me.ToolStripStatusLabel1.Text = TextoParaBarraEstado '--------------------------------------------------- ''' <summary> ''' Obtiene un texto para ser mostrado en la ''' barra de estado de un formulario ''' </summary> ''' <returns> ''' Devuelve una cadena del tipo "© Joaquin 'jms32' Medina Serrano 2007-2009" ''' </returns> Public Shared Function Text() As String '------------------------------------------- ' El texto que se monta al final Dim resultado As String = String.Empty ' El texto que se mostrara en la barra de estado Const TextoFijo As String = " © Joaquín 'jms32' Medina Serrano" '------------------------------------------- ' Calculo de la cadena de fechas Try Using SW As New System.IO.StringWriter( _ System.Globalization.CultureInfo.CurrentCulture) '------------------------------------------ ' escribir el nombre SW.Write(TextoFijo) '------------------------------------------ ' escribir el primer año SW.Write( _ String.Format( _ System.Globalization.CultureInfo.CurrentCulture, _ ", {0}", _ AÑO_PARTIDA.ToString _ (System.Globalization.CultureInfo.CurrentCulture))) '------------------------------------------ ' Añadir el segundo año (p.e:2007-2008) ' Por ejemplo en el caso de que el año sea posterior al 2007 If DateTime.Now.Year > AÑO_PARTIDA Then SW.Write( _ String.Format( _ System.Globalization.CultureInfo.CurrentCulture, _ "-{0} ", _ DateTime.Now.Year.ToString _ (System.Globalization.CultureInfo.CurrentCulture) _ )) End If '------------------------------------------ SW.Flush() resultado = SW.ToString End Using Catch ex As Exception ' no hacer nada para devolver solo el nombre resultado = TextoFijo '----------------------------------------------------------- ' Regla FxCop '----------------------------------------------------------- ' Regla FxCop no cumplimentada ' Ignoro la advertencia FxCop ' No capturar los tipos de excepción general ' System.Exception se captura en una instrucción catch o ' se utiliza una cláusula catch general. ' http://msdn.microsoft.com/es-es/library/ms182137.aspx '------------------------------------------------------ End Try Return resultado End Function End Class End Namespace

↑↑↑

A.2.Enlaces

[Para saber mas]
[Grupo de documentos]
[Documento Index]
[Documento Start]
[Imprimir el Documento]