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 :

Binding d'un DataObject dans un DataTemplate


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 38
    Par défaut Binding d'un DataObject dans un DataTemplate
    Bonjour!
    Aujourd'hui, ma colle concerne les DataTemplate.

    J'utilise un datatemplate pour un type d'objet (disons Foo) et je voudrais binder cette instance (complète, et pas juste une de ses propriétés) à un UIElement qui accepte une propriété de type Foo.

    Avec du code ca sera peut-etre plus clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <DataTemplate DataType="{x:Type ns:Foo}">
    ...
       <ns:MonControl Foo={Binding <Que mettre ici ??? (si c'est possible...)>} 
    ...
    </DataTemplate>
    Encore plus concrètement, j'utilise un DataTemplate sur un DashStyle. Je ne peut pas binder la propriété Dashes, c'est pourquoi je cherche à binder l'objet complet.

    Ci-joint mon projet dont le but est de dessiner à l'intérieur des choix d'une comboBox.

    Merci d'avance!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Est-ce que c'est ça que tu cherche à faire :

    Code xml : 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
    <Window x:Class="WpfApplication2.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300" Loaded="OnLoaded">
      <Window.Resources>
        <DataTemplate DataType="{x:Type DashStyle}">
          <Image Stretch="None" Margin="20">
            <Image.Source>
              <DrawingImage>
                <DrawingImage.Drawing>
                  <DrawingGroup>
                    <GeometryDrawing>
                      <GeometryDrawing.Geometry>
                        <GeometryGroup>
                          <LineGeometry StartPoint="0,0" EndPoint="75,0" />
                        </GeometryGroup>
                      </GeometryDrawing.Geometry>
                      <GeometryDrawing.Pen>
                        <!-- MON PROBLEME EST LA !-->
                        <!-- Je voudrais binder l'objet DashStyle de ma comboBox avec DashStyle={Binding ...}-->
                        <Pen Brush="Red" Thickness="2">
                          <!-- A moins qu'il y ait une solution pour faire marcher les lignes ci-dessous-->
                          <Pen.DashStyle>
                            <DashStyle Dashes="{Binding Path=Dashes}" />
                          </Pen.DashStyle>
                        </Pen>
                      </GeometryDrawing.Pen>
                    </GeometryDrawing>
                  </DrawingGroup>
                </DrawingImage.Drawing>
              </DrawingImage>
            </Image.Source>
          </Image>
        </DataTemplate>
      </Window.Resources>
     
      <StackPanel>
        <TextBlock TextWrapping="Wrap" Margin="10">Affichage personnalisé d'une comboBox.</TextBlock>
        <ComboBox Name="comboPerso" Margin="10" >
          <!--<ComboBoxItem>
                    <DashStyle Dashes="0.1,3"/>
                              </ComboBoxItem>
                              <ComboBoxItem>
                                <DashStyle Dashes="2,6"/>
                              </ComboBoxItem> -->
        </ComboBox>
      </StackPanel>
    </Window>

    Et dans le constructeur par exemple, tu associes une collection de DashStyle à l'ItemsSource :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        public Window1() {
          InitializeComponent();
     
          ObservableCollection<DashStyle> obsDashStyle = new ObservableCollection<DashStyle>();
          obsDashStyle.Add(DashStyles.Dash);
          obsDashStyle.Add(DashStyles.DashDot);
          obsDashStyle.Add(DashStyles.DashDotDot);
          obsDashStyle.Add(DashStyles.Dot);
          obsDashStyle.Add(DashStyles.Solid);
     
          this.comboPerso.ItemsSource = obsDashStyle;
        }

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Par défaut
    {Binding} ?

  4. #4
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 38
    Par défaut
    Merci !

    Il y avait une faute dans mon xaml : il manquait des " à la fins du binding, mais curieusement, l'erreur n'avait rien à voir.

    Et en plus, je ne savais pas qu'il existait des types pré-définis ! Donc merci encore

    @usbeck : effectivement c'est la solution pour binder sur le dataObject! Merci

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

Discussions similaires

  1. Binding dans un DataTemplate
    Par jmnicolas dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 19/10/2011, 22h00
  2. Binding de Button.Content dans un DataTemplate
    Par Invité dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 22/06/2011, 18h12
  3. Binding avec ElementName dans un DataTemplate
    Par annalady dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 23/06/2008, 14h00
  4. [WPF] ajouter dynamiquement un control dans un dataTemplate.
    Par maa dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 28/02/2008, 08h20
  5. Binding sur <h:inputText> dans une boucle
    Par danyboy85 dans le forum JSF
    Réponses: 6
    Dernier message: 29/05/2007, 11h16

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