2013-09-03 5 views
1

J'ai une grille de données et je souhaite que les utilisateurs puissent éditer les valeurs dans l'une des colonnes. Cependant, en fonction de la valeur d'une autre colonne, je dois les saisir dans une zone de texte (autre valeur de colonne = 0) ou choisir une valeur dans une liste déroulante (autre valeur de colonne> 00) que je remplirai à partir d'un dictionnaire.Modifier la zone de liste déroulante Datagrid ou la zone de texte

Comment est-ce que je ferais quelque chose comme ceci?

+0

Qu'avez-vous essayé? Avez-vous du code que vous pouvez nous montrer? Il y a plusieurs façons de le faire. Vous pouvez, par exemple, lier le contenu de la colonne 2 au contenu de la colonne 1 et disposer d'un convertisseur pour décider de la colonne de contrôle 2. – PoweredByOrange

+0

Eh bien, je n'ai encore rien essayé et je cherchais des conseils sur la façon de faire quelque chose comme ça. Jusqu'à présent, je n'avais rien trouvé alors peut-être que je ne cherchais pas les mots clés corrects. –

Répondre

1

Vous pouvez définir le TemplateColumn pour votre DataGrid et définir son CellTemplate comme ci-dessous:

<DataGrid> 
     <DataGrid.Columns> 
      <DataGridTemplateColumn> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <ContentControl x:Name="ContentPlaceholder"> 
          <ContentControl.Style> 
           <Style TargetType="{x:Type ContentControl}"> 
            <Setter Property="ContentTemplate"> 
             <Setter.Value> 
              <DataTemplate> 
               <ComboBox /> 
              </DataTemplate> 
             </Setter.Value> 
            </Setter> 
            <Style.Triggers> 
             <DataTrigger Binding="{Binding COLUMNTWOPROPERTY}" Value="0"> 
              <Setter Property="ContentTemplate"> 
               <Setter.Value> 
                <DataTemplate> 
                 <TextBox Text="{Binding PROPERTYFORTEXTBOX}"/> 
                </DataTemplate> 
               </Setter.Value> 
              </Setter> 
             </DataTrigger> 
            </Style.Triggers> 
           </Style> 
          </ContentControl.Style> 
         </ContentControl> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

Ici COLUMNTWOPROPERTY est la valeur qui détermine si la cellule doit montrer ou zone de texte combobox.

Merci

+0

Merci, a dû changer ControlTemplate à DataTemplate sinon il ne serait pas compiler. –

+0

ohh oui .... a mis à jour la réponse – Nitin

+0

Cela a-t-il résolu votre question? – Nitin

Questions connexes