5 votes

Ajouter une image dans la colonne DataGridTemplateColumn

BitmapImage im = new BitmapImage();

string path1 = @"C:\abc.png";

im.UriSource=new Uri(path1);

DataGridTemplateColumn one = new DataGridTemplateColumn();

this.dataGrid1.Columns.Add(one);

Maintenant, je dois ajouter l'image BitmapImage dans la colonne du modèle de grille de données.

Comment ajouter une image dans la colonne ?

18voto

Mohammad Heskol Points 715

Il est difficile de travailler avec des modèles de contrôle dans le code. Dans WPF, la méthode standard et efficace consiste à créer la disposition de votre modèle en XAML. Ensuite, si vous devez transmettre des données à vos contrôles, utilisez la liaison de données. Normalement, vous ne devriez pas avoir besoin de construire des modèles en code, sauf dans de rares circonstances.

Pour obtenir le même effet que celui recherché ci-dessus en utilisant XAML, vous écrivez :

    <DataGrid x:Name="dataGrid1">
        <DataGrid.Columns>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Image Source="file:///C:\abc.png" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

Si le chemin de l'image doit être dynamique pour chaque ligne de la grille, vous pouvez le modifier comme suit :

    <DataGrid x:Name="dataGrid1" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Image Source="{Binding ImageFilePath}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

et voici un exemple de code pour remplir la grille avec des données :

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        List<MyDataObject> list = new List<MyDataObject>();
        list.Add(new MyDataObject() { ImageFilePath = new Uri("file:///c:\\abc.png") });
        list.Add(new MyDataObject() { ImageFilePath = new Uri("file:///c:\\def.png") });
        dataGrid1.ItemsSource = list;
    }
}

public class MyDataObject
{
    public Uri ImageFilePath { get; set; }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X