CollectionViewSource
Para utilizar CollectionViewSource
enlazado a datos de Entity Framework Core (EF Core), primero necesitas definir un modelo de datos y configurar un contexto de base de datos. Aquí hay un ejemplo básico que utiliza EF Core y CollectionViewSource
en un proyecto WPF:
Supongamos que tienes una entidad llamada Persona
:
// Clase de entidad Persona
public class Persona
{
public int Id { get; set; }
public string Nombre { get; set; }
public int Edad { get; set; }
}
Luego, configura un contexto de base de datos que herede de DbContext
:
// Contexto de base de datos
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
}
}
Ahora, puedes utilizar CollectionViewSource
para enlazar a los datos de EF Core en tu aplicación WPF:
<Window x:Class="EjemploEFCore.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<CollectionViewSource x:Key="cvsPersonas" Source="{Binding Personas}" />
</Window.Resources>
<Grid>
<DataGrid ItemsSource="{Binding Source={StaticResource cvsPersonas}}" AutoGenerateColumns="True" />
</Grid>
</Window>
En el código detrás de tu ventana (MainWindow.xaml.cs
), configura el contexto de EF Core y establece el DataContext
:
using System.Windows;
namespace EjemploEFCore
{
public partial class MainWindow : Window
{
public ApplicationDbContext DbContext { get; set; }
public MainWindow()
{
InitializeComponent();
// Inicializar el contexto de EF Core
DbContext = new ApplicationDbContext();
// Asignar la lista al recurso CollectionViewSource
CollectionViewSource.GetDefaultView(DbContext.Personas.Local).Filter = FiltrarPersonas;
// Cargar los datos desde la base de datos
DbContext.Personas.Load();
// Establecer el DataContext para el enlace de datos
DataContext = this;
}
// Método de filtro para el CollectionViewSource
private bool FiltrarPersonas(object item)
{
// Filtrar personas mayores de 30 años
if (item is Persona persona)
{
return persona.Edad > 30;
}
return false;
}
}
}
Asegúrate de tener configurada una conexión válida en tu cadena de conexión y de haber aplicado las migraciones de EF Core para crear la base de datos. Este es un ejemplo básico, y puedes adaptarlo según las necesidades específicas de tu aplicación y modelo de datos.