IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Framework .NET Discussion :

[xaml] Bind sur le titre d'une page


Sujet :

Framework .NET

  1. #1
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    Par défaut [xaml] Bind sur le titre d'une page
    Salut !
    Je cherche un moyen de Binder un label ou autre chose sur le titre d'une page affichée dans un Frame.
    Peut-on faire cela en "XAML pur" ou faut-il nécessairement passer par du code ?
    Un ordinateur fait ce qu'on lui demande, et c'est bien le problème.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Ca, ca marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <Page x:Name="MyPage" Title="Mon Titre" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
      <Label Content="{Binding ElementName=MyPage, Path=Title}" />
    </Page>
    A+

  3. #3
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    Par défaut
    Oui mais dans ton cas le label est contenu dans la frame, moi, je l'ai pas précisé, le label en question se trouve en dehors de la page (page hote) ou pour être plus précis dans la frame elle-même (barre de titre de la frame) dont j'ai redéfini le design via un ControlTemplate.
    Le but est donc de faire quelquechose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <ControlTemplate x:Type="MaFrame" x:Target="Frame">
       <Grid>
           ....
          <Label Content="{Binding Quelquechose}"/>
          <ContentPresenter/>
       </Grid>
    </ControlTemplate>
    Un ordinateur fait ce qu'on lui demande, et c'est bien le problème.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Dans ce cas, je pense que tu vas devoir surcharger OnApplyTemplate pour faire ton Binding....

  5. #5
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    Par défaut
    Bon finalement le seul moyen que j'ai trouvé pour résoudre le problème est de superposer une Frame et un Label (pour le titre).
    L'astuce consiste ensuite à écrire un peu de code pour le traitement de l'événement Navigated de la Frame et de positionner le contenu du titre en fonction de ce qu'il y a dans les eventArgs (avec un gros cast de la mort du content en page).

    Coté XAML cela nous donne donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <Grid>
      <Grid.RowDefinitions>
         <RowDefinition Height="22"/>
         <RowDefinition Height="*"/>
      </Grid.RowDefinitions>
      <Frame Grid.Row="0" 
                 Grid.RowSpan="2" 
                 Navigated="NavigationService_Navigated"
                 Source="Page1.xaml" 
                 NavigationUIVisibility="Visible"  />
      <Label Grid.Row="0" 
                x:Name="TitreImage" 
                Content="Titre de la page" 
                HorizontalAlignment="Center"/>
    </Grid>
    et côté C# on a ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void NavigationService_Navigated(object sender, NavigationEventArgs e)
    {
         TitreImage.Content = ((Page)e.Content).Title;            
    }
    C'est moche mais ça marche et pour le moment j'ai pas trouvé mieux.

    Maintenant si quelqu'un avait une solution 100% XAML je suis preneur. J'essaye de vraiment découpler le code métier du graphisme.

    Voilà, bonne nuit
    Un ordinateur fait ce qu'on lui demande, et c'est bien le problème.

  6. #6
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    Par défaut
    Oulà désolé Thomas j'avais pas vu ta réponse avant de poster
    Euh le OnApplyTemplate je connais pas trop mais bon je vais supposer (d'après l'aide) que l'événement est déclenché au chargement du template mais je vois pas trop comment ça marche
    Un ordinateur fait ce qu'on lui demande, et c'est bien le problème.

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    OnApplyTemplate est déclenché.... au moment où le template est appliqué

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Titre d'une page Internet
    Par Ramses__ dans le forum Web & réseau
    Réponses: 4
    Dernier message: 29/09/2006, 11h51
  2. Action sur le serveur via une page web
    Par raphxyz dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 26/08/2006, 18h07
  3. [Mail] Récupérer tous les liens et les titres d'une page
    Par dragon noir dans le forum Langage
    Réponses: 12
    Dernier message: 03/07/2006, 16h09
  4. Réponses: 10
    Dernier message: 26/01/2005, 19h48
  5. Comment Appuyer sur le bouton d'une page web...?
    Par Mayti4 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/01/2005, 14h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo