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

Développement Windows Discussion :

Windows Phone xaml non valide ?


Sujet :

Développement Windows

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Windows Phone xaml non valide ?
    Bonjour,


    Je suis entrain de développer une application WP en C#, mais j'ai un prb :

    Visual studio me dit "XAML non valide" et me souligne tout le pavé ListBox en bleu..
    Cela n’empêche pas la compilation et l'application fonctionne, mais c'est pas très propre

    Le problème vient du convertisseur dans la source de l'image car quand je la retire tout rentre dans l'ordre.
    Mais je voie pas mon erreur :O


    La partie xaml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Border Background="#FFDEDEDE" CornerRadius="10" Margin="10">
                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Width="450">               
     
                                        <TextBlock HorizontalAlignment="Center" Text="{Binding NumIT}"  FontSize="30" Foreground="Blue" Margin="10 10 200 10" />
                                        <Image x:Name="MonImage" Source="{Binding Etat, Converter={StaticResource EtatConverter}}" Width="48" Height="48" />
     
                                    </StackPanel>
                                </Border>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
    Le converter :

    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
    17
     
        public class EtatConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                if (value.ToString()  == "EnCours")
                   return new  Uri("Assets/Images/EnCours.png", UriKind.Relative);
                else if (value.ToString() == "Fini")
                  return new Uri("Assets/Images/Fini.png", UriKind.Relative);
                return 0;
            }
     
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                throw new NotImplementedException(); //doing one-way binding so this is not required.
            }
        }
    Merci

  2. #2
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Tu dois déclarer ton convertisseur dans ton xaml
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <UserControl.Resources>
            <conv:EtatConverter x:Key="EtatConverter" />
    </UserControl.Resources>
    Avec le using qui va bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xmlns:conv="clr-namespace:Nomprojet.Helper"

    Là ce devrait mieux fonctionner, parfois il le souligne encore, mais il compile
    " Je préfère comprendre les gens qui ne me comprennent pas "

  3. #3
    Membre averti
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 349
    Points
    349
    Par défaut
    Bonjour,

    Pourquoi un return 0? Utilises un "return null" plutôt... Et vérifies aussi l'url de tes images...

    Code CS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
      if (value.ToString()  == "EnCours")
        return new  Uri("Assets/Images/EnCours.png", UriKind.Relative); // Es-tu certain de l'url des images? Les images ne sont-elles pas en ressources?
      else if (value.ToString() == "Fini")
        return new Uri("Assets/Images/Fini.png", UriKind.Relative);
     
      return null;
    }
    ****** Analyse/Développeur .Net

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour, merci de porter attention à mon petit problème


    J'ai effectivement oublié tout ça (ou en partie). C'est vrai que je maîtrise encore mal les "using" en xaml.. Je trouve la façon de faire un peut bizarre.

    Mais le problème persiste.
    Voila ce que j'ai rajouté:

    Dans le MainPage.xaml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <phone:PhoneApplicationPage
        x:Class="APP_WP_KBS.MainPage"
        .
        .
     
        .
        xmlns:conv="clr-namespace:APP_WP_KBS.EtatConverter"
        .
        .
    shell:SystemTray.IsVisible="True">
    EtatConverter étant le fichier contenant ma classe EtatConverter. Il souligne cette ligne et me dit :
    "Espace de noms CLR non définit. L'URL 'clr-namespace' fait référence à un espace de noms 'APP_WP_KBS.EtatConverter' qui est introuvable."



    et je déclare mon convertisseur sur le conteneur le plus proche des controles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Width="450">
              <StackPanel.Resources>
                    <conv:EtatConverter x:Key="EtatConverter" />
               </StackPanel.Resources>
     
                <TextBlock HorizontalAlignment="Center" Text="{Binding NumIT}"  FontSize="30" Foreground="Blue" Margin="10 10 200 10" />
                 <Image x:Name="MonImage" Source="{Binding Etat, Converter={StaticResource EtatConverter}}" Width="48" Height="48" />
     
    </StackPanel>
    Là il me souligne "conv:EtatConverter" et me dit : "Le nom 'EtatConverter' n'éxiste pas dans l'espace de nom "clr-namespace:APP_WP_KBS.EtatConverter""

    Je comprend vraiment pas :/

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par SoBaKa Voir le message
    Bonjour,

    Pourquoi un return 0? Utilises un "return null" plutôt... Et vérifies aussi l'url de tes images...

    Code CS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
      if (value.ToString()  == "EnCours")
        return new  Uri("Assets/Images/EnCours.png", UriKind.Relative); // Es-tu certain de l'url des images? Les images ne sont-elles pas en ressources?
      else if (value.ToString() == "Fini")
        return new Uri("Assets/Images/Fini.png", UriKind.Relative);
     
      return null;
    }
    Oui tu as raison, entre temps j'ai changé le return 0 qui ne veut rien dire dans ce cas là ..

    Mais ça ne change rien, et les images sont bien au bon endroit.

  6. #6
    Membre averti
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 349
    Points
    349
    Par défaut
    Comme te l'as indiqué "Jabbal'H", tu dois définir ton converter en "resources" et lui donner une clef afin qu'il soit accessible avec le "StaticResource". Concernant le namespace, c'est bien le namespace ".net" à lui donné, donc sans le nom de la classe.

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     <phone:PhoneApplicationPage
        x:Class="APP_WP_KBS.MainPage"
        .
        .
     
        .
        xmlns:conv="clr-namespace:APP_WP_KBS"
        .
        .
    shell:SystemTray.IsVisible="True">
    <phone:PhoneApplicationPage.Resources>
       <conv:EtatConverter x:Key="EtatConverter" />
    </phone:PhoneApplicationPage.Resources>
    ****** Analyse/Développeur .Net

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par SoBaKa Voir le message
    Comme te l'as indiqué "Jabbal'H", tu dois définir ton converter en "resources" et lui donner une clef afin qu'il soit accessible avec le "StaticResource". Concernant le namespace, c'est bien le namespace ".net" à lui donné, donc sans le nom de la classe.

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     <phone:PhoneApplicationPage
        x:Class="APP_WP_KBS.MainPage"
        .
        .
     
        .
        xmlns:conv="clr-namespace:APP_WP_KBS"
        .
        .
    shell:SystemTray.IsVisible="True">
    <phone:PhoneApplicationPage.Resources>
       <conv:EtatConverter x:Key="EtatConverter" />
    </phone:PhoneApplicationPage.Resources>

    Avec ça on retourne sur le problème de tout en haut :/ (mais au moins ça compile)


    Voila tout le code ça sera plus simple :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
     
    <phone:PhoneApplicationPage
        x:Class="APP_WP_KBS.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
        xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
        xmlns:design="clr-namespace:APP_WP_KBS"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        xmlns:conv="clr-namespace:APP_WP_KBS"
     
        mc:Ignorable="d"
        FontFamily="{StaticResource PhoneFontFamilyNormal}"
        FontSize="{StaticResource PhoneFontSizeNormal}"
        Foreground="{StaticResource PhoneForegroundBrush}"
        SupportedOrientations="Portrait" Orientation="Portrait"
        shell:SystemTray.IsVisible="True">
        <phone:PhoneApplicationPage.Resources>
            <conv:EtatConverter x:Key="EtatConverter" />
        </phone:PhoneApplicationPage.Resources>
     
        <!--LayoutRoot est la grille racine où tout le contenu de la page est placé-->
        <Grid x:Name="LayoutRoot" Background="Transparent" ShowGridLines="True">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
     
            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,0">
            <TextBlock Text="MON APPLICATION" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
            </StackPanel>
     
            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <Grid>
                    <ProgressBar x:Name="ProgresseBar" HorizontalAlignment="Left" Height="21" Margin="97,10,0,0" VerticalAlignment="Top" Width="331" IsIndeterminate="True" Visibility="Collapsed"/>
     
                    <ListBox x:Name="listeBoxDesIT"  Margin="0 80 0 0" SelectionMode="Single" ItemsSource ="{Binding}" SelectionChanged="listeBoxDesIT_SelectionChanged">
                        <d:DesignProperties.DataContext>
                            <design:MainPageDesign />
                        </d:DesignProperties.DataContext>
     
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Border Background="#FFDEDEDE" CornerRadius="10" Margin="10">
                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Width="450">
     
                                        <TextBlock HorizontalAlignment="Center" Text="{Binding NumIT}"  FontSize="30" Foreground="Blue" Margin="10 10 200 10" />
                                        <Image x:Name="MonImage" Source="{Binding Etat, Converter={StaticResource EtatConverter}}" Width="48" Height="48" />
     
                                    </StackPanel>
                                </Border>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                    <TextBlock x:Name="Test" HorizontalAlignment="Left" Margin="41,44,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Width="372"/>
     
                </Grid>
            </Grid>
     
        </Grid>
     
    </phone:PhoneApplicationPage>
    et le converter :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Data;
    using System.Globalization;
    using System.Windows.Media.Imaging;
     
    namespace APP_WP_KBS
    {
     
     
     
     
        public class EtatConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                if (value.ToString()  == "EnCours")
                   return new Uri("Assets/Images/EnCours.png", UriKind.Relative);
                else if (value.ToString() == "Fini")
                  return new Uri("Assets/Images/Fini.png", UriKind.Relative);
                return null;
            }
     
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                throw new NotImplementedException(); //doing one-way binding so this is not required.
            }
        }
    }

  8. #8
    Membre averti
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 349
    Points
    349
    Par défaut
    Je suis quasi persuadé que le problème vient des url des images...

    Peux-tu remplacer :
    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    <Image x:Name="MonImage" Source="{Binding Etat, Converter={StaticResource EtatConverter}}" Width="48" Height="48" />

    par :
    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    <TextBlock Text="{Binding Etat, Converter={StaticResource EtatConverter}}" />

    Si ça ne fonctionne pas et que tu as l'occassion, tu peux également m'envoyer le projet complet afin que je puisse checker ça plus en détail?
    ****** Analyse/Développeur .Net

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'ai remplacé et il m'affiche bien l'url des images.

    Mais en faite tout fonctionne, les images s'affichent bien il me met juste ce fichu "XAML non valide" ..

    Je veux bien t'envoyer le projet complet, mais tu ne pourra pas le tester car il utilise un service web qui va bientôt être coupé pour le weekend.

    Voila un Screenshots avant :



    Nom : IES2.png
Affichages : 135
Taille : 200,8 Ko
    Images attachées Images attachées  

Discussions similaires

  1. XAML non valide
    Par Samyy17 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 11/05/2014, 11h56
  2. [Windows Phone 8] XAML non valide pourtant l'application fonctionne
    Par youtpout978 dans le forum Windows Phone
    Réponses: 4
    Dernier message: 03/03/2014, 21h18
  3. xaml non valide
    Par technosmile dans le forum Silverlight
    Réponses: 7
    Dernier message: 08/03/2011, 13h06
  4. window.open : argument non valide
    Par Unusual dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/07/2009, 13h12

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