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

Silverlight Discussion :

[SL3] vers [SL4]


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Par défaut [SL3] vers [SL4]
    Bonjour,

    après de très longues opérations d'adaptation de code, modification de références, j'ai passé un projet vs2008 .net 3.5 Sl3 & ria services à vs2010 .net 4.0 Sl4 & wcf services. j'en ai encore les nerfs en pelote ^^

    bref mon projet se charge mais la page blanchit d'un coup lors d'un context.load dans un partial class (page enfant donc). peut-être manque-t-il une adaptation dans mon xaml... le .cs semble correct...

    Home.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
    15
    16
    17
    18
    19
    20
     
    <ItemsControl Grid.Column="0" x:Name="ICtoBind">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Vertical" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Button x:Name="{Binding CHRONO}" Style="{StaticResource GlassButtonStyle}" Click="Navigation_Click">
                        <StackPanel>
                             <TextBlock Text="{Binding NOM}" />
                             <TextBox Name="btnType" Visibility="Collapsed" Text="{Binding TYPE}" />
                             <TextBox Name="btnCible" Visibility="Collapsed" Text="{Binding CIBLE}" />
                        </StackPanel>
                    </Button>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
        ...

    Home.xaml.cs
    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
     
    void Home_Loaded(object sender, RoutedEventArgs e)
    {
        FBContext ctx = new FBContext();
        int laccueil = 0;
     
        if (this.NavigationContext.QueryString.ContainsKey("id"))
        {
            Int32 qs = Convert.ToInt32(this.NavigationContext.QueryString["id"]);
            ctx.Load<CATEGORIE>(ctx.GetUneCATEGORIEQuery(qs)).Completed += (sendeur, args) =>
            {
                List<CATEGORIE> liste = ((LoadOperation<CATEGORIE>)sendeur).Entities.ToList();
     
                foreach (CATEGORIE Item in liste)
                {
                    if (Item.ACCUEIL.HasValue) laccueil = (int)Item.ACCUEIL;
                }
                TBmessage.Text += laccueil;
                ICtoBind.ItemsSource = ctx.SSCATEGORIEs;
     
                // ça bloque ici !!!
                ctx.Load<SSCATEGORIE>(ctx.GetSSCATEGORIEByNvQuery(qs, 0), true).Completed += (sendeur2, args2) =>
                {
                    List<SSCATEGORIE> liste2 = ((LoadOperation<SSCATEGORIE>)sendeur2).Entities.ToList();
     
                    foreach (SSCATEGORIE Item2 in liste2)
                    {
                        if (laccueil == (int)Item2.CHRONO)
                        {
                            Navigation((int)Item2.TYPE, Convert.ToString(Item2.CHRONO), Item2.CIBLE);
                        }
                    }
                };
            };
        }
    }
    ctx.Load<SSCATEGORIE>(ctx.GetSSCATEGORIEByNvQuery(qs, 0), true) :
    ctx.GetSSCATEGORIEByNvQuery(qs, 0) fonctionne, mais lors du ctx.Load<SSCATEGORIE>, ma page se bloque avec l'erreur bateau :
    Erreur*: Erreur non gérée dans l'application Silverlight
    Code: 1001
    Categorie: ParserError
    Message: AG_E_UNKNOWN_ERROR
    Fichier:
    Ligne: 38
    Position: 111

    Fichier Source*: http://localhost:52878/default.htm
    Ligne*: 56
    en dissociant , je constate bien le blocage sur ctx.load :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    EntityQuery<SSCATEGORIE> tmp = ctx.GetSSCATEGORIEByNvQuery(qs, 0);
    ctx.Load<SSCATEGORIE>(tmp) <- page blanche
    si vous avez un indice, un besoin de code supplémentaire, n'hésitez pas !! je suis dans une impasse...

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Categorie: ParserError
    Message: AG_E_UNKNOWN_ERROR
    à première vue ton problème vient de XAML et non du code cs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    EntityQuery<SSCATEGORIE> tmp = ctx.GetSSCATEGORIEByNvQuery(qs, 0);
    ctx.Load<SSCATEGORIE>(tmp); // <- page blanche
    Comme le problème s'effectue lors du chargement c'est que c'est sans doute lié à ton DataTemplate qui n'est executé que lorsqu'il y a des données :

    En effet, dans ton bouton le changement par Binding de son nom ne semble pas très catholique.

    x:Name="{Binding CHRONO}"

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Par défaut
    Merci d'avoir prit le temps de me lire ^^

    en sl3 / .net 2 cela se passait très bien... d'ailleurs avant que le binding ne s'active, la page s'affiche sans erreurs... sinon la syntaxe aurait-elle changé ?

    si je suis l'activité du service, j'ai plusieurs warnings dans l'activité "Ouvrir ServiceHost 'System.ServiceModel.DomainServices.Hosting.ServiceUtility+WebServiceHostInspector+Service'. "

    • contexte d'évaluation de la configuration introuvable (2 fois)
    • Échec de l'ouverture de System.ServiceModel.DomainServices.Hosting.ServiceUtility+WebServiceHostInspector.
    • System.ServiceModel.DomainServices.Hosting.ServiceUtility+WebServiceHostInspector a généré des erreurs
    • Une erreur ServiceHost s'est produite.


    mon service est configuré ainsi :

    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
     
    <system.serviceModel>
     
      <diagnostics wmiProviderEnabled="false">
        <messageLogging logEntireMessage="false" logMalformedMessages="false" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="false" maxMessagesToLog="20000" maxSizeOfMessageToLog="2621440" />
      </diagnostics>
     
      <behaviors>
        <serviceBehaviors>
          <behavior name="MOOREA.Web.ServiceCategoriesBehavior">
            <serviceMetadata httpGetEnabled="true" />
            <serviceDebug includeExceptionDetailInFaults="false" />
          </behavior>
        </serviceBehaviors>
      </behaviors>
     
      <bindings>
        <customBinding>
          <binding name="customBinding0">
            <binaryMessageEncoding />
            <httpTransport />
          </binding>
        </customBinding>
      </bindings>
     
      <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
     
      <services>
        <service behaviorConfiguration="MOOREA.Web.ServiceCategoriesBehavior" name="MOOREA.Web.ServiceCategories">
          <endpoint address="" binding="customBinding" bindingConfiguration="customBinding0" contract="MOOREA.Web.ServiceCategories" />
          <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        </service>
      </services>
    </system.serviceModel>

  4. #4
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Je pense que tu devrais commencer par commenter l'ItemTemplate de ton ItemsControl afin de t'assurer que le problème ne vienne pas de XAML.

    EDIT : Je te confirme que le binding sur x:Name fonctionne en SL3 (!!!) mais pas en SL4.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Par défaut
    j'ai retiré le binding sur le x:name, et tout fonctionne... Merci !!!

    je ne comprend pas pourquoi ça a marché et ça ne veut plus, mais l'important est là ^^ merci encore

    enfin presque parce que j'en ai besoin de ce name... du coup j'ai dû modifier ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <Button Style="{StaticResource GlassButtonStyle}" Click="Navigation_Click">
      <StackPanel>
        <TextBlock Text="{Binding NOM}" />
        <TextBlock Name="btnName" Visibility="Collapsed" Text="{Binding CHRONO}" />
        <TextBox Name="btnType" Visibility="Collapsed" Text="{Binding TYPE}" />
        <TextBox Name="btnCible" Visibility="Collapsed" Text="{Binding CIBLE}" />
      </StackPanel>
    </Button>
    et j'y accède ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Button btn = sender as Button;
    string lId = ((btn.FindName("btnName")) as TextBox).Text;
    Int32 leType = Int32.Parse(((btn.FindName("btnType")) as TextBox).Text);
    string laCible = ((btn.FindName("btnCible")) as TextBox).Text;
    ça marche... mais c'est un peu lourd ! il n'y a pas un moyen d'associer différents paramètres à mon Button par binding sans être obligé de le faire en redéfinissant la structure du bouton (et je ne parle pas de ce que j'ai dû mettre dans mon fichier ressource pour le designer...) j'ai appris sur le tas par la méthode lourde ^^

    ça fonctionne, donc encore merci, mais s'il y a moyen d'alléger je suis preneur !!

  6. #6
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Le plus élégant est de jouer avec le DataContext je pense.
    Si par exemple l'objet passé dans ton DataContext est de type MonObjet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Button btn = sender as Button;
    MonObjet monObjet = btn.DataContext as MonObjet;
     
    string lId = monObjet.NOM;
    Int32 leType = monObjet.TYPE;
    string laCible = monObjet.CIBLE;

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

Discussions similaires

  1. Migration SL4 vers SL5, je cherche des références
    Par Golzinne dans le forum Silverlight
    Réponses: 2
    Dernier message: 05/02/2012, 18h15
  2. migration SL4 vers SL5
    Par Golzinne dans le forum Silverlight
    Réponses: 8
    Dernier message: 30/01/2012, 09h39
  3. [SL4] Différences sur DataAnnotations avec SL3
    Par stailer dans le forum Silverlight
    Réponses: 7
    Dernier message: 29/10/2010, 15h55
  4. [SL4/SL3] Probléme visual studio
    Par Archeone dans le forum Silverlight
    Réponses: 8
    Dernier message: 13/05/2010, 14h26
  5. backward compatibilité sl4/ sl3
    Par Issam dans le forum Silverlight
    Réponses: 6
    Dernier message: 24/02/2010, 14h33

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