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

Windows Phone .NET Discussion :

Binding object Image


Sujet :

Windows Phone .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Par défaut Binding object Image
    Bonjour je desérialise des éléments json grace à la conversion jsontocsharp.com.

    j'ai les classes suivante:
    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
     public class MovieSearch
        {
            public object score { get; set; }
            public int popularity { get; set; }
            public bool translated { get; set; }
            public bool adult { get; set; }
            public string language { get; set; }
            public string original_name { get; set; }
            public string name { get; set; }
            public string alternative_name { get; set; }
            public string movie_type { get; set; }
            public string id { get; set; }
            public string imdb_id { get; set; }
            public string url { get; set; }
            public int votes { get; set; }
            public double rating { get; set; }
            public string certification { get; set; }
            public string overview { get; set; }
            public string released { get; set; }
            public List<object> posters { get; set; }
            public List<object> backdrops { get; set; }
            public int version { get; set; }
            public string last_modified_at { get; set; }
        }
     
        public class RootObjectsearch
        {
            public string exec_time { get; set; }
            public List<MovieSearch> movies { get; set; }
        }
    je cherche à binder l'élément suivant dans une images d'un Template d'une listbox que j'alimente avec itemsource.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var root = JsonConvert.DeserializeObject<RootObjectsearch>(e.Result);
                    seeensearch.ItemsSource = root.movies
    Tout vas bien sauf pour l'objet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public List<object> posters { get; set; }
    j'ai binder l'image de la façon suivante mais ma methode semble incorrecte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <ListBox x:Name="seeensearch" HorizontalAlignment="Left" Width="416" Height="414" SelectionChanged="searchdetails_SelectionChanged">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Width="400" Height="150">
                                <Image x:Name="tpicfilmline" Source="{Binding posters[1].url}" RenderTransformOrigin="0.5,0.5" Height="110" Width="90" Margin="0,-78,0,0"/>
                                <TextBlock x:Name="ttitleline" Height="43" Text="{Binding name}" Margin="100,-35,0,0"/>
                                <TextBlock x:Name="trelease" Text="{Binding released}" Height="46" HorizontalAlignment="Left" Width="266"/>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
    je me retrouve avec l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    System.Windows.Data Error: BindingExpression path error: 'url' property not found on '{
      "image": {
        "type": "poster",
        "size": "w154",
        "height": 250,
        "width": 154,
        "url": "http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w154/8I62x8uGDexcC7Kuj0jhfwGEEm6.jpg",
        "id": "4fa7d3e119c2956d170026cb"
      }
    }' 'Newtonsoft.Json.Linq.JObject' (HashCode=47702931). BindingExpression: Path='posters[1].url' DataItem='Myseeen.MovieSearch' (HashCode=26019245); target element is 'System.Windows.Controls.Image' (Name='tpicfilmline'); target property is 'Source' (type 'System.Windows.Media.ImageSource')..
    Comment puis-je m'y prendre? merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 57
    Par défaut
    Essaye avec Source="{Binding url}" plutôt

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Par défaut
    Citation Envoyé par Majorlamda Voir le message
    Essaye avec Source="{Binding url}" plutôt
    Merci pour la reponse rapide
    mais quand j'essaye juste source={binding url}

    j'ai toujours pas d'image mais il ne m'affiche pas d'erreur.

    en faite je penses que Posters devrais etre plus une liste car je peux avoir plusieurs url

    un exemple de la partie json concerné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "posters":[{"image":{"type":"poster","size":"thumb","height":138,"width":92,"url":"http:\/\/d3gtl9l2a4fn1j.cloudfront.net\/t\/p\/w92\/gynBNzwyaHKtXqlEKKLioNkjKgN.jpg","id":"4ea5e8a6a34d4b3d2d000111"}},{"image":{"type":"poster","size":"w154","height":231,"width":154,"url":"http:\/\/d3gtl9l2a4fn1j.cloudfront.net\/t\/p\/w154\/gynBNzwyaHKtXqlEKKLioNkjKgN.jpg","id":"4ea5e8a6a34d4b3d2d000111"}}]
    j'ai essayé:
    Source="{Binding url[1]}"

    mais pareil erreur il ne trouve pas

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Par défaut
    je penses avoir résolue une partie du problème

    il fallait j'écrive de la facon suivante.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    source={Binding Path=posters[1].[image][url]}
    Maintenant j'ai l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    System.Windows.Data Error: 'MS.Internal.Data.DynamicValueConverter' converter failed to convert value 'http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w154/8I62x8uGDexcC7Kuj0jhfwGEEm6.jpg' (type 'Newtonsoft.Json.Linq.JValue'); BindingExpression: Path='posters[1].[image][url]' DataItem='Myseeen.MovieSearch' (HashCode=3094327); target element is 'System.Windows.Media.Imaging.BitmapImage' (Name='null'); target property is 'UriSource' (type 'System.Uri').. System.InvalidOperationException: Can't convert type Newtonsoft.Json.Linq.JValue to type System.Uri.
       at MS.Internal.Data.DefaultValueConverter.Create(Type sourceType, Type targetType, Boolean targetToSource)
       at MS.Internal.Data.DynamicValueConverter.EnsureConverter(Type sourceType, Type targetType)
       at MS.Internal.Data.DynamicValueConverter.Convert(Object value, Type targetType, Object parameter, CultureInfo culture)
       at System.Windows.Data.BindingExpression.ConvertToTarget(Object value).

  5. #5
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Ton objet Poster n'est pas désérialisé. C'est une sorte de proxy que JSON.NET crée. Comme tu le vois dans l'erreur, les propriétés sont de types JValue.

    Deux options : soit tu ajoute au binding un converter JValue => Uri, soit tu crées une classe Poster pour que la désérialisation puisse se faire.

Discussions similaires

  1. DataGridViewComboBoxColumn binding objects
    Par m.joseph dans le forum VB.NET
    Réponses: 5
    Dernier message: 13/10/2010, 09h44
  2. Binding object DataProvider Combobox
    Par richton95 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 05/08/2009, 10h24
  3. Binding object DataProvider
    Par richton95 dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 26/05/2009, 17h35
  4. Réponses: 3
    Dernier message: 10/08/2007, 13h45
  5. [VBa-E] Object Ole "image bitmap" dans une Userform?
    Par gootsu dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/07/2006, 14h24

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