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 :

DataGrid et Combobox dans cellules


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut DataGrid et Combobox dans cellules
    Bonjour,
    C'est encore moi !
    J'ai un problème avec les datagrid, je souhaite avoir dans certaines cellules d'une même colonne des combobox, mais pas dans toute la colonne.
    Les choix possibles des combobox sont fixes et ne changent jamais.

    Je donne l'image de ma datagrid.
    Je veux que les cellules qui ont des true (que je peux changer facilement en oui) donnent une combobox avec oui et non comme choix.

    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Utilise une colonne de type DataGridTemplateColumn.

    Il y a des propriétés CellTemplateSelector et EditingCellTemplateSelector, qui permettent de définir des sélecteurs (DataTemplateSelector) pour choisir dynamiquement le template à utiliser, en fonction de la colonne

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut
    Merci, même si je pense que j'en ait pour un moment pour faire ça.

    Autre question bête, comment je crée une resources avec juste deux infos :
    Oui et Non pour faire une StaticResource (je suis pas obliger de faire une classe pour ça ? )

    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
    <DataGridTemplateColumn Header="Status" Width="100">
     
                                <DataGridTemplateColumn.CellTemplate>
     
                                    <DataTemplate>
     
                                        <TextBlock Text="{Binding Valeurs}"/>
     
                                    </DataTemplate>
     
                                </DataGridTemplateColumn.CellTemplate>
     
                                <DataGridTemplateColumn.CellEditingTemplate>
     
                                    <DataTemplate>
     
                                        <ComboBox Height="22"  ItemsSource="{StaticResource OuiNon}"  SelectedItem="{Binding Valeurs}"/>
     
                                    </DataTemplate>
     
                                </DataGridTemplateColumn.CellEditingTemplate>
     
     
                            </DataGridTemplateColumn>

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu peux mettre des valeurs true/false, avec un ItemTemplate qui affiche oui ou non selon la valeur :

    Par exemple :
    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
        <ComboBox SelectedItem="{Binding LaPropriétéQueTuVeux}">
          <sys:Boolean>True</sys:Boolean>
          <sys:Boolean>False</sys:Boolean>
          <ComboBox.ItemTemplate>
            <DataTemplate DataType="{x:Type sys:Boolean}">
              <TextBlock Name="textValue" Text="Non" />
              <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding}" Value="True">
                  <Setter TargetName="textValue" Property="Text" Value="Oui" />
                </DataTrigger>
              </DataTemplate.Triggers>
            </DataTemplate>
          </ComboBox.ItemTemplate>
        </ComboBox>

    C'est une des approches possibles, mais il y en a plein d'autres. Tu pourrais aussi utiliser un converter qui transforme true/false en oui/non... ou même utiliser une CheckBox avec un template qui lui donne l'apparence d'une CheckBox
    (ça parait bizarre, mais ça aurait un certain sens vu que les valeurs oui/non sont souvent représentées par des checkbox)

    Petit exemple de cette dernière possibilité (testé sous Kaxaml) :

    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
    <Page
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:sys="clr-namespace:System;assembly=mscorlib">
      <Page.Resources>
        <Style x:Key="ComboCheckBoxStyle" TargetType="{x:Type CheckBox}">
          <Setter Property="Template">
            <Setter.Value>
              <ControlTemplate TargetType="{x:Type CheckBox}">
                <ComboBox>
                  <ComboBoxItem Name="trueItem" IsSelected="{Binding IsChecked, RelativeSource={RelativeSource TemplatedParent}}">Oui</ComboBoxItem>
                  <ComboBoxItem Name="falseItem">Non</ComboBoxItem>
                </ComboBox>
                <ControlTemplate.Triggers>
                  <Trigger Property="IsChecked" Value="False">
                    <Setter TargetName="falseItem" Property="IsSelected" Value="True" />
                  </Trigger>
                </ControlTemplate.Triggers>
              </ControlTemplate>
            </Setter.Value>
          </Setter>
        </Style>
      </Page.Resources>
      <Grid>
        <Grid.RowDefinitions>
          <RowDefinition />
          <RowDefinition />
        </Grid.RowDefinitions>
        <CheckBox Grid.Row="0" Name="chk1" Width="100" Height="23" IsThreeState="True" />
        <CheckBox Grid.Row="1" Name="chk2" Width="100" Height="23"
                  Style="{StaticResource ComboCheckBoxStyle}"
                  IsThreeState="True"
                  IsChecked="{Binding IsChecked, ElementName=chk1}"/>
      </Grid>
    </Page>

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut
    Tout d'abord merci.

    Mais j'ai un problème avec sys:boolean, il me manque un assembly.
    Et dés que je rajoute,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xmlns:sys="clr-namespace:System;assembly=mscorlib">
    J'ai pleins d'erreurs qui apparaisent.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par sandav Voir le message
    Et dés que je rajoute,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xmlns:sys="clr-namespace:System;assembly=mscorlib">
    J'ai pleins d'erreurs qui apparaisent.
    C'est pourtant bien ça qu'il faut rajouter... C'est quoi les erreurs ?

Discussions similaires

  1. [XL-2007] Problème création de combobox dans cellule de listView
    Par fyejumpy dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/06/2015, 12h28
  2. Copier valeur choisie dans ComboBox dans cellule a chaque fois differente
    Par juliematlab dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/01/2013, 09h04
  3. Combobox dans cellule de MSFlexgrid
    Par red210 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/02/2008, 16h56
  4. ComboBox dans DataGrid
    Par the big ben 5 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/12/2005, 15h47
  5. [VB.NET] ajouter combobox dans un datagrid
    Par HULK dans le forum Windows Forms
    Réponses: 6
    Dernier message: 27/10/2005, 14h30

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