Introducció a WPF
Windows Presentation Foundation (WPF) és una tecnologia de Microsoft per a la creació d'aplicacions d'escriptori amb interfícies d'usuari riques i interactives. WPF utilitza XAML (Extensible Application Markup Language) per definir la interfície d'usuari i permet la separació clara entre la lògica de la interfície i el codi de l'aplicació.
Objectius del Mòdul
- Comprendre els conceptes bàsics de WPF.
- Aprendre a crear interfícies d'usuari amb XAML.
- Gestionar esdeveniments i dades en WPF.
- Implementar estils i plantilles per a una millor experiència d'usuari.
Conceptes Bàsics de WPF
Arquitectura de WPF
WPF es basa en tres pilars principals:
- XAML: Llenguatge de marcat per definir la interfície d'usuari.
- Data Binding: Vinculació de dades entre la interfície d'usuari i el codi.
- Estils i Plantilles: Personalització de l'aparença i el comportament dels controls.
Estructura d'una Aplicació WPF
Una aplicació WPF típica consta de:
- MainWindow.xaml: Defineix la interfície d'usuari principal.
- MainWindow.xaml.cs: Conté la lògica de l'aplicació.
Exemple Bàsic
<!-- MainWindow.xaml -->
<Window x:Class="WpfApp.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">
<Grid>
<Button Name="myButton" Content="Click Me" Width="100" Height="50" Click="myButton_Click"/>
</Grid>
</Window>// MainWindow.xaml.cs
using System.Windows;
namespace WpfApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void myButton_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Button Clicked!");
}
}
}Explicació del Codi
- MainWindow.xaml: Defineix una finestra amb un botó.
- MainWindow.xaml.cs: Conté la lògica per gestionar l'esdeveniment de clic del botó.
XAML: Llenguatge de Marcat
Elements Bàsics de XAML
- Controls: Botons, etiquetes, caixes de text, etc.
- Layouts: Grid, StackPanel, Canvas, etc.
- Propietats: Atributs dels controls (Width, Height, Content, etc.).
Exemple de XAML
<Window x:Class="WpfApp.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">
<Grid>
<StackPanel>
<TextBlock Text="Hello, WPF!" FontSize="24" Margin="10"/>
<Button Content="Click Me" Width="100" Height="50" Margin="10"/>
</StackPanel>
</Grid>
</Window>Explicació del Codi
- TextBlock: Mostra text.
- StackPanel: Organitza els elements en una pila vertical.
- Button: Botó amb text "Click Me".
Data Binding
Conceptes de Data Binding
- Source: Origen de les dades.
- Target: Destí de les dades (control de la interfície d'usuari).
- Binding Modes: OneWay, TwoWay, OneTime, etc.
Exemple de Data Binding
<Window x:Class="WpfApp.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">
<Grid>
<TextBox Name="myTextBox" Width="200" Height="30" Margin="10"/>
<TextBlock Text="{Binding ElementName=myTextBox, Path=Text}" FontSize="24" Margin="10,50,10,10"/>
</Grid>
</Window>Explicació del Codi
- TextBox: Control d'entrada de text.
- TextBlock: Mostra el text del TextBox mitjançant data binding.
Estils i Plantilles
Definició d'Estils
Els estils permeten definir l'aparença dels controls de manera centralitzada.
Exemple d'Estil
<Window x:Class="WpfApp.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>
<Style TargetType="Button">
<Setter Property="Background" Value="LightBlue"/>
<Setter Property="FontSize" Value="16"/>
</Style>
</Window.Resources>
<Grid>
<Button Content="Styled Button" Width="150" Height="50" Margin="10"/>
</Grid>
</Window>Explicació del Codi
- Window.Resources: Defineix recursos compartits, com ara estils.
- Style: Aplica un estil a tots els botons de la finestra.
Exercicis Pràctics
Exercici 1: Crear una Interfície d'Usuari Simple
Crea una aplicació WPF amb els següents requisits:
- Una finestra amb un TextBox i un Button.
- Quan es faci clic al botó, mostra el text del TextBox en un MessageBox.
Solució
<Window x:Class="WpfApp.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">
<Grid>
<StackPanel>
<TextBox Name="inputTextBox" Width="200" Height="30" Margin="10"/>
<Button Content="Show Text" Width="100" Height="50" Margin="10" Click="ShowTextButton_Click"/>
</StackPanel>
</Grid>
</Window>using System.Windows;
namespace WpfApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ShowTextButton_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(inputTextBox.Text);
}
}
}Exercici 2: Aplicar Estils a Controls
Crea una aplicació WPF amb els següents requisits:
- Una finestra amb dos botons.
- Aplica un estil que canviï el color de fons i la mida de la font dels botons.
Solució
<Window x:Class="WpfApp.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>
<Style TargetType="Button">
<Setter Property="Background" Value="LightGreen"/>
<Setter Property="FontSize" Value="18"/>
</Style>
</Window.Resources>
<Grid>
<StackPanel>
<Button Content="Button 1" Width="150" Height="50" Margin="10"/>
<Button Content="Button 2" Width="150" Height="50" Margin="10"/>
</StackPanel>
</Grid>
</Window>Resum
En aquest mòdul, hem après els conceptes bàsics de WPF, incloent-hi la creació d'interfícies d'usuari amb XAML, la vinculació de dades, i l'aplicació d'estils i plantilles. Hem vist exemples pràctics i hem realitzat exercicis per reforçar els conceptes apresos. Amb aquests coneixements, estàs preparat per crear aplicacions d'escriptori riques i interactives amb WPF.
Curs de Programació en C#
Mòdul 1: Introducció al C#
- Introducció al C#
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
Mòdul 2: Estructures de Control
Mòdul 3: Programació Orientada a Objectes
Mòdul 4: Conceptes Avançats de C#
- Interfícies
- Delegats i Esdeveniments
- Genèrics
- Col·leccions
- LINQ (Consulta Integrada al Llenguatge)
- Programació Asíncrona
Mòdul 5: Treballant amb Dades
Mòdul 6: Temes Avançats
- Reflexió
- Atributs
- Programació Dinàmica
- Gestió de Memòria i Recollida d'Escombraries
- Multifil i Programació Paral·lela
Mòdul 7: Construcció d'Aplicacions
Mòdul 8: Millors Pràctiques i Patrons de Disseny
- Estàndards de Codificació i Millors Pràctiques
- Patrons de Disseny
- Proves Unitàries
- Revisió de Codi i Refactorització
