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 :

WPF - UserControl dynamique et Binding RelativeSource


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 52
    Par défaut WPF - UserControl dynamique et Binding RelativeSource
    Bonjour à tous,
    J'ai une fenêtre qui se charge d'afficher des UserControl créés dynamiquement un peu comme un wizard control sauf qu'il y'a une animation de transition entre chaque UserControl.

    Dans un de mes contrôles j'ai un DataGrid avec mon ItemSource binder à une ObservableCollectionde mon viewmodel et dans un des headers de colonne j'ai une combobox binder à une autre ObservableCollection, mais vu que la DataGrid a son ItemSource de binder je remonte a mon UserControl pour atteindre le DataContext de mon viewModel (sinon je suis dans le contexte de ma datagrid):
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <ComboBox  ItemsSource="{Binding EnabledFilter}" 
                SelectedItem="{Binding EnabledFilterSelected}" 
                DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl, AncestorLevel=1}, Path=DataContext}"
                HorizontalAlignment="Center" >

    Tout marche parfaitement bien si je mets mon UserControl dans une fenêtre.
    Par contre si je crée celui-ci dynamiquement (+le temps de l'animation) le binding est dans les choux, le RelativeSource ne fonctionne plus.

    J'ai testé en donnant un nom à mon usercontrol et utilisé ElementName sans succès.

    Petite précision, mon DataContext est directement lié à mon viewmodel en xaml.

    Donc voilà si quelqu'un à une idée, solution à me proposer hormis de sortir ma combobox du header de ma datagrid ^^.

    Cordialement.

  2. #2
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    Salut,

    mon DataContext est directement lié à mon viewmodel en xaml.
    C'est-à-dire (code...)?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 52
    Par défaut
    Bonjour,
    C'était simplement pour préciser que je ne créais pas le DataContext en code behind

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <UserControl.DataContext>
      <vm:UserListVM />
    </UserControl.DataContext>

  4. #4
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    Donc tu peux écrire :
    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <vm:UserListVM x:Key="viewModel"/>
    .....
     <ComboBox DataContext="{StaticResource viewModel}" ItemsSource="{Binding EnabledFilter}" 
                              SelectedItem="{Binding EnabledFilterSelected}" 
                              HorizontalAlignment="Center" />

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 52
    Par défaut
    Ah oui effectivement je n'avais pas pensé à passer le DataContext en ressources!
    Merci beaucoup pour cette suggestion.

    Ca m'aura au moins permis de découvrir les limitations du RelativeSource.

    Cordialement

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

Discussions similaires

  1. [WPF] UserControl -> binding ??
    Par UNi[FR] dans le forum C#
    Réponses: 1
    Dernier message: 10/09/2007, 11h31
  2. [WPF] UserControl pour un historique de nav
    Par UNi[FR] dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 10/09/2007, 11h19
  3. [WPF] UserControl: impossible à ajouter à la toolbox
    Par SoBaKa dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 23/05/2007, 09h14
  4. Réponses: 1
    Dernier message: 01/05/2007, 14h59
  5. [C# 2.0] encore un problème de usercontrol dynamique!
    Par gdkenny dans le forum ASP.NET
    Réponses: 8
    Dernier message: 11/10/2006, 14h50

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