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:
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:
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:
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:
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: