DataBinding
El Data Binding (enlace de datos) en WPF (Windows Presentation Foundation) es una característica clave que permite la conexión entre los elementos de la interfaz de usuario (UI) y los datos de la aplicación. Permite que los cambios en los datos se reflejen automáticamente en la interfaz de usuario y viceversa. Aquí te proporcionaré una explicación detallada del Data Binding en WPF con varios ejemplos.
1. Binding a una Propiedad Simple:
<Window x:Class="WpfDataBindingEjemplo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="200" Width="300">
<Grid>
<TextBox Text="{Binding Nombre}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// Establecer el DataContext (contexto de datos) para la ventana
DataContext = new ViewModel();
}
}
public class ViewModel
{
public string Nombre { get; set; } = "John";
}
Este ejemplo enlaza el contenido de un TextBox
a una propiedad Nombre
en un objeto ViewModel. Cualquier cambio en la propiedad Nombre
se reflejará automáticamente en el TextBox
.
2. Binding a una Lista (ItemsSource):
<Window x:Class="WpfDataBindingEjemplo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="200" Width="300">
<Grid>
<ListBox ItemsSource="{Binding Personas}" DisplayMemberPath="Nombre"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// Establecer el DataContext para la ventana
DataContext = new ViewModel();
}
}
public class ViewModel
{
public ObservableCollection<Persona> Personas { get; set; }
public ViewModel()
{
// Inicializar la colección de Personas
Personas = new ObservableCollection<Persona>
{
new Persona { Nombre = "John", Edad = 30 },
new Persona { Nombre = "Alice", Edad = 25 },
new Persona { Nombre = "Bob", Edad = 35 }
};
}
}
public class Persona
{
public string Nombre { get; set; }
public int Edad { get; set; }
}
Este ejemplo enlaza los elementos de un ListBox
a una colección de objetos Persona
. Cualquier cambio en la colección se reflejará automáticamente en el ListBox
.
3. Binding a Comandos (Command Binding):
<Window x:Class="WpfDataBindingEjemplo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="200" Width="300">
<Grid>
<Button Content="Click Me" Command="{Binding MiComando}"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// Establecer el DataContext para la ventana
DataContext = new ViewModel();
}
}
public class ViewModel
{
public ICommand MiComando { get; set; }
public ViewModel()
{
// Inicializar el comando
MiComando = new RelayCommand(ExecuteMiComando);
}
private void ExecuteMiComando(object parameter)
{
MessageBox.Show("¡Comando ejecutado!");
}
}
public class RelayCommand : ICommand
{
private readonly Action<object> _execute;
public RelayCommand(Action<object> execute)
{
_execute = execute;
}
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
_execute(parameter);
}
public event EventHandler CanExecuteChanged;
}
Este ejemplo enlaza un Button
a un comando (ICommand
) en el ViewModel. Cuando se hace clic en el botón, se ejecuta el comando, que muestra un mensaje de MessageBox.
Estos son solo algunos ejemplos básicos de Data Binding en WPF. La potencia del Data Binding se manifiesta plenamente cuando se utiliza en aplicaciones más grandes y complejas, permitiendo una gestión más sencilla de los datos y una interfaz de usuario más dinámica.
https://learn.microsoft.com/en-us/dotnet/desktop/wpf/data/?view=netdesktop-7.0