Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - impostare l'allineamento centrato in un datgrid
Forum - C# / VB.NET - impostare l'allineamento centrato in un datgrid

Avatar
mg (Normal User)
Rookie


Messaggi: 39
Iscritto: 19/11/2009

Segnala al moderatore
Postato alle 18:56
Martedì, 25/05/2010
Mi riferisco al datagrid WPF.

Utilizzo la proprietà itemsource per popolare il datagrid con valori testo.

Non riesco ad impostare l'allineamento del testo delle singole celle come centrato.

Mi date una mano?

grazie



PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 21:42
Martedì, 25/05/2010
potresti associare al datagrid un DataTemplate che associa agli item come content un TextBlock centrato.

PM Quote
Avatar
mg (Normal User)
Rookie


Messaggi: 39
Iscritto: 19/11/2009

Segnala al moderatore
Postato alle 16:31
Martedì, 01/06/2010
Testo quotato

Postato originariamente da netarrow:

potresti associare al datagrid un DataTemplate che associa agli item come content un TextBlock centrato.



Grazie del consiglio. Purtroppo non sono riuscito a superare il problema vista la mia poca conoscenza del DataTemplate (anche se lo sto studiando). Ho provato a fare quanto mi dici con una ListBox e sono riuscito. Ho usato la proprietà ItemSource della ListBox, poi ho impostato il binding tra la prorpietà Text delle TextBlock e la proprietà X degli oggetti inseriti in un insieme. Questi oggetti hanno una proprietà "X" e una proprietà "Y".
No riesco a fare la stessa cosa con il DataGrid poichè non ho una sola colonna. Come imposto il binding (ho proprietà X e una proprietà Y)? Devo visualizzare nella prima colonna la proprietà X e nella seconda la prorpietà Y. Posso creare un DataTamplate per ogni colonna?

grazie

marco

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 23:43
Martedì, 01/06/2010
In questo periodo sto studiando anche io WPF quindi ho approfittato per fare una prova.
Non ho usato un DataTemplate ma uno Style alla fine.

Così puoi applicare a seconda della colonna lo stile che preferisci, alla fine potresti centrare la colonna anche passandogli direttamente la proprietà TextBlock.TextAlign, fammi sapere se il comportamento che voleri era altro.

xaml
Codice sorgente - presumibilmente Plain Text

  1. <Window x:Class="prova.MainWindow"
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.         Title="MainWindow" Height="350" Width="525">
  5.     <Window.Resources>
  6.         <Style x:Key="testStyle">
  7.             <Setter Property="TextBlock.TextAlignment" Value="Center"></Setter>
  8.         </Style>
  9.         <Style x:Key="newStyle">
  10.             <Setter Property="TextBlock.TextAlignment" Value="Right"></Setter>
  11.         </Style>
  12.     </Window.Resources>
  13.    
  14.     <DataGrid ItemsSource="{Binding}" AutoGenerateColumns="false" CellStyle="{StaticResource testStyle}">
  15.         <DataGrid.Columns>
  16.             <DataGridTextColumn Header="Nome" Binding="{Binding Path=nome}">
  17.             </DataGridTextColumn>
  18.             <DataGridTextColumn Header="Cognome" Binding="{Binding Path=cognome}">
  19.             </DataGridTextColumn>
  20.             <DataGridTextColumn Header="Username" Binding="{Binding Path=username}" CellStyle="{StaticResource newStyle}">            
  21.             </DataGridTextColumn>
  22.         </DataGrid.Columns>
  23.     </DataGrid>
  24. </Window>



Code-behind per dati mock
Codice sorgente - presumibilmente C#

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace prova
  7. {
  8.     class Person
  9.     {
  10.         public string nome { get; set; }
  11.         public string cognome { get; set; }
  12.         public string username { get; set; }
  13.     }
  14. }
  15.  
  16. ---
  17.  
  18. using System;
  19. using System.Collections.Generic;
  20. using System.Linq;
  21. using System.Text;
  22. using System.Windows;
  23. using System.Windows.Controls;
  24. using System.Windows.Data;
  25. using System.Windows.Documents;
  26. using System.Windows.Input;
  27. using System.Windows.Media;
  28. using System.Windows.Media.Imaging;
  29. using System.Windows.Navigation;
  30. using System.Windows.Shapes;
  31.  
  32. namespace prova
  33. {
  34.     /// <summary>
  35.     /// Interaction logic for MainWindow.xaml
  36.     /// </summary>
  37.     public partial class MainWindow : Window
  38.     {
  39.         public MainWindow()
  40.         {
  41.             InitializeComponent();
  42.             List<Person> lista = new List<Person>();
  43.             lista.Add(
  44.                     new Person()
  45.                     {
  46.                         nome = "matteo",
  47.                         cognome = "tomasulo",
  48.                         username = "netarrow"
  49.                     }
  50.                 );
  51.             lista.Add(
  52.                 new Person()
  53.                 {
  54.                     nome = "tizio",
  55.                     cognome = "caio",
  56.                     username = "bubu"
  57.                 }
  58.             );
  59.             this.DataContext = lista;
  60.         }
  61.     }
  62. }


PM Quote
Avatar
mg (Normal User)
Rookie


Messaggi: 39
Iscritto: 19/11/2009

Segnala al moderatore
Postato alle 15:28
Giovedì, 03/06/2010
Hai risposto perfettamente ai miei dubbi. Ho risolto il mio problema.

Ti ringrazio

Marco :k:

PM Quote