DataGrid
El control DataGrid
en WPF es una poderosa herramienta para mostrar y editar datos en forma de tabla. Puede enlazarse a una variedad de fuentes de datos, incluyendo listas de objetos, colecciones y bases de datos mediante Entity Framework Core (EF Core). A continuación, proporcionaré una explicación detallada junto con ejemplos prácticos de enlaces a diferentes fuentes.
1. Enlazar a una Lista de Objetos:
<Window x:Class="WpfDataGridEjemplo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid x:Name="dataGrid" AutoGenerateColumns="True" />
</Grid>
</Window>
using System.Collections.Generic;
using System.Windows;
namespace WpfDataGridEjemplo
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<Persona> personas = new List<Persona>
{
new Persona { Nombre = "John", Edad = 30 },
new Persona { Nombre = "Alice", Edad = 25 },
new Persona { Nombre = "Bob", Edad = 35 }
};
dataGrid.ItemsSource = personas;
}
}
public class Persona
{
public string Nombre { get; set; }
public int Edad { get; set; }
}
}
2. Enlazar a una ObservableCollection:
<Window x:Class="WpfDataGridEjemplo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid x:Name="dataGrid" AutoGenerateColumns="True" />
</Grid>
</Window>
using System.Collections.ObjectModel;
using System.Windows;
namespace WpfDataGridEjemplo
{
public partial class MainWindow : Window
{
public ObservableCollection<Persona> Personas { get; set; }
public MainWindow()
{
InitializeComponent();
Personas = new ObservableCollection<Persona>
{
new Persona { Nombre = "John", Edad = 30 },
new Persona { Nombre = "Alice", Edad = 25 },
new Persona { Nombre = "Bob", Edad = 35 }
};
dataGrid.ItemsSource = Personas;
}
}
public class Persona
{
public string Nombre { get; set; }
public int Edad { get; set; }
}
}
3. Enlazar a EF Core:
<Window x:Class="WpfDataGridEjemplo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid x:Name="dataGrid" AutoGenerateColumns="True" />
</Grid>
</Window>
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Windows;
namespace WpfDataGridEjemplo
{
public partial class MainWindow : Window
{
private ApplicationDbContext _dbContext;
public MainWindow()
{
InitializeComponent();
_dbContext = new ApplicationDbContext();
// Asegúrate de aplicar las migraciones para crear la base de datos
//_dbContext.Database.Migrate();
List<Persona> personas = _dbContext.Personas.ToList();
dataGrid.ItemsSource = personas;
}
}
public class ApplicationDbContext : DbContext
{
public DbSet<Persona> Personas { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("TuCadenaDeConexion"); // Reemplaza con tu cadena de conexión
}
}
public class Persona
{
public int Id { get; set; }
public string Nombre { get; set; }
public int Edad { get; set; }
}
}
Estos ejemplos cubren la creación de un DataGrid
en WPF y su enlace a diferentes fuentes de datos, como listas de objetos, ObservableCollection
y Entity Framework Core. Asegúrate de tener las dependencias necesarias instaladas y de aplicar las migraciones en el caso de EF Core para crear la base de datos.