Silverlight: Como cambiar el titulo de la pagina

En los foros de Silverlight preguntaban como enlazar el título de una página a un control. El problema está en que Silverlight por defecto no tiene una propiedad que nos permita acceder directamente al título de la página. Esto es debido a que Silverlight no está concebido para una relación uno a uno (HTML-Silverlight) sino como una forma de complementar la página HTML. Pero en cambio si que propone un sistema de interacción entre ambos mundos.

Por lo tanto, para poder abordar dicho problema crearé una clase llamada PageUtil:

using System.Windows.Browser;

public class PageUtil
{
    public static string PageTitle
    {
        get
        {
            var result = "";
            var elements =
                HtmlPage.Document.GetElementsByTagName("Title");
            if (elements != null && elements.Count > 0)
            {
                var titleElement = (HtmlElement)elements[0];
                result = (string)titleElement.GetProperty("innerHTML");
            }
            return result;
        }
        set
        {
            HtmlPage.Document.SetProperty("title", value);
        }
    }
}

Una vez que ya tenemos la clase creada debemos crear el recurso, ya sea a nivel local en el UserControl o a nivel de aplicación (para una clase tan genérica yo recomiendo que sea a nivel de aplicación).

<MyProject:PageUtil x:Key="PageUtilDataSource" /> 

Y luego solamente tenemos que enlazar la propiedad al control queramos:

<TextBox DataContext="{Binding Source={StaticResource PageUtilDataSource}}"
         Text="{Binding Path=PageTitle, Mode=TwoWay}"
         Height="30"
         VerticalAlignment="Top" />

Recuerdo que a mayores de hacer el enlace (en nuestro caso en la propiedad Text) debemos establecerle el DataContext con el recurso.

Como siempre espero que os sea útil.

Follow me! http://twitter.com/eugenioestrada

5 comentarios en “Silverlight: Como cambiar el titulo de la pagina”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *