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 Presentation Foundation Discussion :

rérérence à une datatemplate


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 352
    Par défaut rérérence à une datatemplate
    bonjour,
    voici mon nouveau problème. J'ai défini au niveau de mon application deux ressources l'une étant un ObjectDataProvider et l'autre un DataTemplate. L'objectDaProvider me permet d'appeler le méthode statique GetFiles de Directory.
    Dans mon code XAML j'ai un listview qui fait référence à cet ObjectDataProvider
    Dans mon code c# je donne le MethodeParameters à utliser

    Mon DataTemplate doit me permettre d'afficher les images relatives aux adresses obtenues
    Lorsque je ne fais pas appel au datatemplate la listview affiche bien la liste de mes adresses. Par contre lorsque je fais référence au datatemplate j'ai une exception qui est levée m'indiquant que la source Uri doit être définie
    Je n'arrive pas à trouver mon erreur

    voici mes différents codes

    Défintion des ressource
    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
    <Application x:Class="OBJECDATAPROVIDER.App"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:system="clr-namespace:System;assembly=mscorlib"
                 xmlns:io="clr-namespace:System.IO;assembly=mscorlib"
                 StartupUri="MainWindow.xaml">
        <Application.Resources>
            <ObjectDataProvider x:Key="Four_Images" ObjectType="{x:Type io:Directory}"
                                        MethodName="GetFiles">
                <ObjectDataProvider.MethodParameters>
     
                </ObjectDataProvider.MethodParameters>
            </ObjectDataProvider>
     
            <DataTemplate x:Key="Modele_Image">
                <Image >
                    <Image.Source>
                        <BitmapImage DecodePixelWidth="20" UriSource="{Binding Source={StaticResource Four_Images}}"/>
                    </Image.Source> 
                </Image> 
            </DataTemplate>
        </Application.Resources>
    </Application>
    définition de la fenêtre
    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
    <Window x:Class="OBJECDATAPROVIDER.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:OBJECDATAPROVIDER"
            xmlns:system="clr-namespace:System;assembly=mscorlib"
            xmlns:io="clr-namespace:System.IO;assembly=mscorlib"
    Name="fenetre"
     
            Title="MainWindow" Height="350" Width="525">
        <Canvas x:Name="bb" Background="Beige">
     
     
                <Button Name="créer" Width="100" Height="50" Background="Azure"
    Canvas.Top="50" Canvas.Left="50" Content="Créer" Click="créer_Click" />
     
            <TextBox Name="Afficheur" Width="200" Height="50" Canvas.Top="100" Canvas.Left="200"
                     Text="{Binding  Path=Nom}" />
     
            <ListView x:Name="Carousselle" ItemsSource="{Binding Source={StaticResource  Four_Images} }" 
                     ItemTemplate="{StaticResource Modele_Image}" Height="311" Width="70">
     
            </ListView>
     
     
     
        </Canvas>
    </Window>
    Code 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    ing System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.ComponentModel;
    using System.Collections.ObjectModel;
     
    namespace OBJECDATAPROVIDER
    {
        /// <summary>
        /// Logique d'interaction pour MainWindow.xaml
        /// </summary>
        /// 
     
     
     
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
     
     
     
     
     
     
            private void créer_Click(object sender, RoutedEventArgs e)
            {
              ObjectDataProvider Four_Images = FindResource("Four_Images") as ObjectDataProvider;
     
     
     
     
                Four_Images.MethodParameters.Add(@"C:\Documents and Settings\michel\Mes documents\Mes images\Ile maurice");
     
            }
     
     
        }
    }
    par avance merci

  2. #2
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Salut,

    à moins que je ne dise une bêtise, tu ne fournis pas une Uri mais une collection d'objets à ta BitmapImage. Selon la définition des objets renvoyés, en principe ça serait plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <DataTemplate>
     
    ...
    <BitmapImage Source="{Binding}"....
    ...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 352
    Par défaut
    tu as raison cela fonctionne. Si je comprends bien le fait qu'avec mon code je retournais une collection je n'arrive pas à comprendre comment un "simple" binding répond à mon besoin

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 62
    Par défaut
    Ton datatemplate représente un "élément" de la listview.
    Un élément de la listview, c'est un élément de la collection ItemsSource.
    Tu as mis ton ODP comme ItemsSource, donc ItemsSource est une liste de string, la liste des fichiers.
    Donc, ton datatemplate, dans cette listview, aura pour DataContext un string, le string que ce template affiche, le chemin d'un fichier.
    Tu dois donc mettre comme source de l'image le datacontext du datatemplate, ce qui ce fait par un {Binding} ou un {Binding .}

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 352
    Par défaut
    ok merci

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

Discussions similaires

  1. Binder une propriété en dehors d'un DataTemplate
    Par DotNET74 dans le forum Windows Phone
    Réponses: 9
    Dernier message: 26/04/2011, 15h44
  2. Binder le datacontext d'une LV dans le datatemplate
    Par NejNej dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 08/10/2010, 19h07
  3. Associer une fonction à un event depuis un DataTemplate
    Par Takumi dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 07/06/2010, 13h57
  4. Comment récupérer la propriété IsChecked d'une CheckBox définie en DataTemplate ?
    Par WebPac dans le forum Windows Presentation Foundation
    Réponses: 19
    Dernier message: 20/01/2010, 15h23

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