Datagrid em Windows Presentation Foundation

6º Exemplo

Objectivo: Apresentar os empregados ordenados por Nome.

  • Code Behind:
private void WindowLoaded(object sender, RoutedEventArgs e) {
  var employees = new Employees();
  dataGridEmployees.ItemsSource = employees;
  ICollectionView view = CollectionViewSource.GetDefaultView(dataGridEmployees.ItemsSource);
  view.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
}
  • Resultado:

WPF Datagrids: Exemplo 6

7º Exemplo

Objectivo: Filtrar os empregados com salário superior a 500.00€.

  • Code Behind:
private void WindowLoaded(object sender, RoutedEventArgs e) {
  var employees = new Employees();
  dataGridEmployees.ItemsSource =employees;
  ICollectionView view = CollectionViewSource.GetDefaultView(dataGridEmployees.ItemsSource);
  view.Filter = new Predicate<object>(EmployeesWithSalaryGreaterThan500);
}
private bool EmployeesWithSalaryGreaterThan500(object param) {
  var employee = (Employee)param;
  if (employee.Salary > 500)
    return true;
  return false;
}
  • Resultado:

WPF Datagrids: Exemplo 7

8º Exemplo

Objectivo: As linhas da datagrid devem apresentar uma cor alternada.

  • XAML:
<DataGrid Name="dataGridEmployees"
Grid.Column="1" Grid.ColumnSpan="3"
Grid.Row="2"
AutoGenerateColumns="True"
AlternatingRowBackground="LightGray"
AlternationCount="2"/>
private void WindowLoaded(object sender, RoutedEventArgs e) {
  var employees = new Employees();
  dataGridEmployees.ItemsSource = employees;
}
  • Resultado:

WPF Datagrids: Exemplo 8

9º Exemplo

Objectivo: Alterar a altura do cabeçalho das colunas, alterar o tipo de fonte da letra e tamanho e cor. Alterar a cor das linhas horizontais e verticais da datagrid.

  • XAML:

Nos resources da Window, definimos o estilo que iremos aplicar às células.

<Window.Resources>
  <Style x:Key="columnStyle"
TargetType="DataGridColumnHeader">
    <Setter Property="FontFamily"
Value="Arial Black" />
    <Setter Property="FontSize"
Value="14"/>
    <Setter Property="Foreground"
Value="Red"/>
  </Style>
</Window.Resources>
<DataGrid Name="dataGridEmployees"
Grid.Column="1" Grid.ColumnSpan="3"
Grid.Row="2"
AutoGenerateColumns="True"
ColumnHeaderStyle="{DynamicResourcecolumnStyle}"
ColumnHeaderHeight="40"
GridLinesVisibility="All"
HorizontalGridLinesBrush="Red"
VerticalGridLinesBrush="Green"/>
  • Code Behind:
private void WindowLoaded(object sender, RoutedEventArgs e){
  var employees = new Employees();
  dataGridEmployees.ItemsSource = employees;
}
  • Resultado:

WPF Datagrids: Exemplo 9

10º Exemplo:

Objectivo: Ao seleccionar uma célula e mostrar uma mensagem de aviso de que foi detectada uma alteração, apresentando o nome do empregado seleccionado e o nome da coluna seleccionada.

  • XAML:
<DataGrid Name="dataGridEmployees"
Grid.Column="1" Grid.ColumnSpan="3"
Grid.Row="2"
AutoGenerateColumns="True"
SelectionMode="Single"
SelectionUnit="Cell"
CurrentCellChanged="DataGridEmployeesCurrentCellChanged"/>
  • Code Behind:
private void WindowLoaded(object sender, RoutedEventArgs e)
{
  var employees = new Employees();
  dataGridEmployees.ItemsSource = employees;
}
private void DataGridEmployeesCurrentCellChanged(objectsender, System.EventArgs e) {
  Employee selectedEmployee = (Employee)dataGridEmployees.CurrentItem;
string message = String.Format("Foi seleccionada a coluna '{0}' do empregado(a) {1}.", dataGridEmployees.CurrentCell.Column.Header,selectedEmployee.Name);
  MessageBox.Show(message);
}
  • Resultado:

WPF Datagrids: Exemplo 10

Referências: