WPF - DataGrid
Olá pessoal, estou criando um aplicativo em WPF e estou com dificuldades em lidar com o DataGrid!
Até agora já consegui puxar os dados de uma list para exibir dentro do DataGrid, mas não consigo manipulá-lo corretamente.
Por Exemplo: Não consigo fazer com que o conteúdo preencha no tamanho do DataGrid, ele vem num pequeno canto apenas.
Tem como eu formatar o conteúdo mesmo que ele seja distribuído dinamicamente?
Queria fazer com que preenchesse todo o espaço disponibilizado, formatar o conteúdo(tamanho e cor dos caracteres) e mudar nome de colunas( tenho que especificar que sejam "AutoColumGenerate = true" para funcionar)!
Desde já agradeço!
Até agora já consegui puxar os dados de uma list para exibir dentro do DataGrid, mas não consigo manipulá-lo corretamente.
Por Exemplo: Não consigo fazer com que o conteúdo preencha no tamanho do DataGrid, ele vem num pequeno canto apenas.
Tem como eu formatar o conteúdo mesmo que ele seja distribuído dinamicamente?
Queria fazer com que preenchesse todo o espaço disponibilizado, formatar o conteúdo(tamanho e cor dos caracteres) e mudar nome de colunas( tenho que especificar que sejam "AutoColumGenerate = true" para funcionar)!
Desde já agradeço!
André Moes
Curtidas 0
Melhor post
Joel Rodrigues
25/10/2012
Olá, André. Vou te passar alguns links de referência sobre esse controle, beleza? Sugiro dar uma lida neles, pois tem muito conteúdo interessante.
1) http://wpftutorial.net/DataGrid.html
2) http://www.macoratti.net/10/03/wpf_dtg1.htm
3) http://www.codeproject.com/Articles/30905/WPF-DataGrid-Practical-Examples
Boa sorte.
1) http://wpftutorial.net/DataGrid.html
2) http://www.macoratti.net/10/03/wpf_dtg1.htm
3) http://www.codeproject.com/Articles/30905/WPF-DataGrid-Practical-Examples
Boa sorte.
GOSTEI 1
Mais Respostas
André Moes
24/10/2012
Olá, André. Vou te passar alguns links de referência sobre esse controle, beleza? Sugiro dar uma lida neles, pois tem muito conteúdo interessante.
1) http://wpftutorial.net/DataGrid.html
2) http://www.macoratti.net/10/03/wpf_dtg1.htm
3) http://www.codeproject.com/Articles/30905/WPF-DataGrid-Practical-Examples
Boa sorte.
1) http://wpftutorial.net/DataGrid.html
2) http://www.macoratti.net/10/03/wpf_dtg1.htm
3) http://www.codeproject.com/Articles/30905/WPF-DataGrid-Practical-Examples
Boa sorte.
Muito Obrigado!!!
Ajudou bastante, principalmente o primeiro link!
Agora comecei a compreender o Binding
mas ainda faltam algumas coisas pra dominar e não encontrei em lugar algum
talvez pela maneira que populei a datagrid, não possua a função que eu deseje
OBS: não tenho wpf toolkit, nem posso instalá-lo aqui.
O que ainda falta:
1) Coonfigurar o texto do Header (Cabeçalho) das colunas. ex: tamanho e cor
2) Centralizar o conteúdo que vem pelo binding na coluna. TextBlock.TextAligment="Center" não funciona!
3) E gostaria que o conteúdo viesse e se ajusta-se ao tamanho da datagrid, ou que pelo menos eu pudesse configurar isso no braço mesmo! (tive que setar o tamanho do conteúdo populado para ficar do tamanho correto)
Aqui vai o código até agora:
1º - código XAML do que tem até agora.
2º - código C# com a função de setar a cor de fundo das duas primeiras linhas.
<DataGrid AutoGenerateColumns="False" Height="397" HorizontalAlignment="Center" Margin="639,53,10,0" Name="dataGridB" VerticalAlignment="Top" Width="535" LoadingRow="dataGrid_LoadingRow" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeColumns="False" IsReadOnly="True"> <DataGrid.Columns> <DataGridTextColumn TextBlock.FontSize="25" TextBlock.FontWeight="Bold" TextBlock.Foreground="Blue" TextBlock.TextAlignment="Justify" Header="Jogador" Binding="{Binding Jogador}" /> <DataGridTextColumn TextBlock.FontSize="25" TextBlock.FontWeight="Bold" TextBlock.Foreground="Blue" TextBlock.TextAlignment="Center" Header="Pts" Binding="{Binding Pontos}" /> <DataGridTextColumn TextBlock.FontSize="25" TextBlock.FontWeight="Bold" TextBlock.Foreground="Blue" TextBlock.TextAlignment="Center" Header="GM " Binding="{Binding GolsMarcados}" /> <DataGridTextColumn TextBlock.FontSize="25" TextBlock.FontWeight="Bold" TextBlock.Foreground="Blue" TextBlock.TextAlignment="Center" Header="GS" Binding="{Binding GolsSofridos}" /> <DataGridTextColumn TextBlock.FontSize="25" TextBlock.FontWeight="Bold" TextBlock.Foreground="Blue" TextBlock.TextAlignment="Center" Header="SG" Binding="{Binding SaldoGols}" /> </DataGrid.Columns> </DataGrid>
public partial class Grupos : Window { public int contador; public Grupos(string MesEtapa, int AnoEtapa) { InitializeComponent(); dataGridA.ItemsSource = GrupoTabela.LoadGrupo(); dataGridB.ItemsSource = GrupoTabela.LoadGrupo(); } private void dataGrid_LoadingRow(object sender, System.Windows.Controls.DataGridRowEventArgs e) { DataGridRow item = e.Row as DataGridRow; contador = contador + 1; if (item != null && contador < 3) { e.Row.Background = new SolidColorBrush(Colors.Goldenrod); } } }
GOSTEI 0
André Moes
24/10/2012
Fiz de uma maneira diferente agora e encontrei os comandos para manipular cabeçalho e header da datagrid:
1) DataGrid personalizada
2) Código C# para colorir o fundo das duas primeiras linhas (foreground)
Na questão das cores, elas vem tudo certo, mas quando eu clico na linha que tem e clico em outra datagrid a cor da linha some, alguém sabe me dizer o que é isso?
1) DataGrid personalizada
2) Código C# para colorir o fundo das duas primeiras linhas (foreground)
Na questão das cores, elas vem tudo certo, mas quando eu clico na linha que tem e clico em outra datagrid a cor da linha some, alguém sabe me dizer o que é isso?
<!-- DataGrid = Exibindo grupo direto do banco de dados: GRUPO A--> <DataGrid AutoGenerateColumns="False" Margin="30,39,610,0" Name="dataGridA" LoadingRow="dataGrid_LoadingRow" ScrollViewer.HorizontalScrollBarVisibility="Hidden" GridLinesVisibility="None" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" CanUserResizeRows="False" IsReadOnly="True" BorderBrush="Blue" Height="406" VerticalAlignment="Top" > <!-- Columns / TextColumn = Definindo propriedades de cada coluna(Cabeçalho), assim como seu respectivo conteúdo(Dados do Grupo) --> <DataGrid.Columns> <DataGridTextColumn TextBlock.FontSize="24" TextBlock.FontWeight="Bold" TextBlock.Foreground="Blue" Header="JOGADOR - TIME" Binding="{Binding Jogador}" /> <DataGridTextColumn TextBlock.FontSize="24" TextBlock.FontWeight="Bold" TextBlock.Foreground="Blue" Header="PTS" Binding="{Binding Pontos}" /> <DataGridTextColumn TextBlock.FontSize="24" TextBlock.FontWeight="Bold" TextBlock.Foreground="Blue" Header="GM " Binding="{Binding GolsMarcados}" /> <DataGridTextColumn TextBlock.FontSize="24" TextBlock.FontWeight="Bold" TextBlock.Foreground="Blue" Header="GS" Binding="{Binding GolsSofridos}" /> <DataGridTextColumn TextBlock.FontSize="24" TextBlock.FontWeight="Bold" TextBlock.Foreground="Blue" Header="SG" Binding="{Binding SaldoGols}" /> </DataGrid.Columns> <!-- ColumnHeaderStyle = Definindo o estilo dos cabeçalhos --> <DataGrid.ColumnHeaderStyle> <Style TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="FontWeight" Value="Bold" /> <Setter Property="FontSize" Value="20" /> <Setter Property="FontFamily" Value="Comic Sans" /> <Setter Property="HorizontalContentAlignment" Value="Center" /> </Style> </DataGrid.ColumnHeaderStyle> <!-- RowStyle = Definindo o estilo das linhas(apenhas alinhamento central) --> <DataGrid.RowStyle> <Style TargetType="{x:Type DataGridRow}"> <Setter Property="TextBlock.TextAlignment" Value="Center" ></Setter> </Style> </DataGrid.RowStyle> </DataGrid>
// Função para colorir o fundo das duas primeiras linhas de cada DataGrid ={Primeiro e Segundo lugar do grupo} private void dataGrid_LoadingRow(object sender, System.Windows.Controls.DataGridRowEventArgs e) { DataGridRow item = e.Row as DataGridRow; switch (item.GetIndex()) { case 0: e.Row.Background = new SolidColorBrush(Colors.Gray); break; case 1: e.Row.Background = new SolidColorBrush(Colors.DarkGray); break; } }
GOSTEI 1