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

 .NET Discussion :

XAML Databinding et UserControl [C#]


Sujet :

.NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 21
    Par défaut XAML Databinding et UserControl
    Bonjour,
    Je me remets à .Net après de nombreuses années, et les choses ont beaucoup changées. Une de ces nouveautés est le XAML pour la mise en forme.

    J’essaie de faire un truc très simple, et je ne comprend pas l'erreur donnée.

    Donc, le but : passer des "UserControl" représentant des objets simples d'une GridViewà une autre.
    Mais avant d'en arriver au Drag&Drop, je suis gêné par le DataBinding.

    Voici la classe servant à stocker les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        class ProductEntity
        {
            public String price { get; set; }
            public String label { get; set; }
        }
    Et la partie C# du UserControl
    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
        public sealed partial class ProductTile : UserControl
        {
            public ProductTile()
            {
                this.InitializeComponent();
                this.Width = 600;
                this.Height = 280;
            }
     
     
            public String Price
            {
                get
                {
                    return this.txtprice.Text;
                }
                set
                {
                    this.txtprice.Text = value;
                }
            }
     
            public String Label
            {
                get
                {
                    return this.txtlabel.Text;
                }
                set
                {
                    this.txtlabel.Text = value;
                }
            }
    Dans ma page, côté C#, je charge les données 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
            ObservableCollection<ProductEntity> source;
     
            public MainPage()
            {
                this.InitializeComponent();
     
                source = new ObservableCollection<ProductEntity>();
                source.Add(newMockupItem());
                source.Add(newMockupItem());
                source.Add(newMockupItem());
                source.Add(newMockupItem());
                source.Add(newMockupItem());
                source.Add(newMockupItem());
     
                this.landing.ItemsSource = source;
     
            }
    Côté XAML, pour les GridView, je défini le DataTemplate suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            <GridView Name="landing" ... >
                <DataTemplate>
                    <local:ProductTile Price="{Binding price}" Label="{Binding label}" />
                </DataTemplate>
            </GridView>
    Mais l'éditeur XAML m'indique :
    Balisage non valide

    Avec en Liste d'erreurs :
    Le membre "Price" n'est pas reconnu ou n'est pas accessible.
    Le membre "Label" n'est pas reconnu ou n'est pas accessible.

    Dans mon esprit, {Binding price} envoyait ProductEntity.price dans le getter de ProductTile.Price (qui est bien public).
    Mais à priori il n'est pas d'accord ^^

    Ou me trompes-je ? Que puis-je améliorer ?

    Merci,
    David

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 21
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <GridView Name="landing" ... >
        <GridView.ItemTemplate>
            <DataTemplate>
                <local:ProductTile x:Name="product" Price="{Binding Price}" Label="{Binding Label}"  />
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
    La solution était assez simple ... il me manquais <GridView.ItemTemplate>

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

Discussions similaires

  1. Utilisation d'un resx dans le XAML d'un UserControl
    Par adaneels dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 26/01/2012, 10h35
  2. Visibilité des champs XAML d'une UserControl déclaré dans une DLL
    Par Lelio1407 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 24/12/2011, 00h25
  3. usercontrol et databinding
    Par Mathieu.Nanoux dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/06/2007, 19h54
  4. usercontrol et databinding
    Par Ichigo_07 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/05/2007, 16h48
  5. [VB.NET] DataBinding, Repeater et UserControl
    Par Invité dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/08/2006, 00h11

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