WPF

Les datagrids pour présenter des données sous forme de tableau

Les datagrids sont très utilisés pour représenter des données (usage plus que courant), donc il est indispensable de bien les connaitre.

 

 

Les templates pour avoir de belles présentation

Les contrôles dynamiques, ajouter effacer, modifier une cellule ou une rangée

Nous aborderons sur la façon de repérer une cellule à modifier lorsqu’un bouton d’action est cliqué, à priori il n’est pas évident de récupérer une valeur d’une cellule ou sa référence, mais en WPF il est plus facile qu’avec un framework JS de se repérer.

Si vous avez un bouton en fin de rangée, appelé « Supprimer » par exemple, vous voulez pouvoir accéder à l’id de la rangée pour pouvoir supprimer la rangée. Une première solution serait de cliquer sur la référence en rouge et ainsi pomper les informations meta sur l’item courant. Mais quand on click sur le bouton, on ne peut procéder de la sorte car on est déporté de la cellule ouù l’information metadata peut résider.

On peut intuitivement se repérer grâce à un id du bouton. Dans le cas présent on utilisera un Tag.

wpf datagrid

<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <TextBlock>
        <Button Click="Delete_Reference_Click" Tag="{Binding}">Supprimer Ref</Button>
        </TextBlock>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

Et dans le code behind on utilisera le sender de l’événement et caster le Tag en l’objet qu’on veut récupérer.

private void Delete_Reference_Click(object sender, RoutedEventArgs e)
{
    MessageBoxResult result = MessageBox.Show("Vous voulez Effacer cette référence?");
    // code effacement
    Produit produit = ((Button)sender).Tag as Produit;
    MessageBoxResult msg = MessageBox.Show("effacé virtuellement");
}

Récupérer le produit dans la souris clique sur une cellule qui contient la référence :

var curr = LesProduits.CurrentCell.Item as Produit;

En cliquant directement sur la cellule on peut récupérer via la propriété CurrentCell la propriété Item qu’on va caster en Produit avec l’opérateur as. un cast avec une parenthèse ne marche pas.

 

 

 

Retour en haut