Newsgroup: it.comp.lang.visual-basic
Titolo: WPF stile griglia

Buongiorno a tutti,
sto provando un po' WPF, quindi ne so poco o nulla.
 
Vorrei fare una griglia in cui le colonne di tipo Data hanno un formato, e
i numeri un altro.
Le colonne per� non le conosco a priori, ma le carico da un datatable a
runtime.
 
C'� il modo di dire:
            Dim dt As New DataTable
            da.Fill(dt)
            With grdFatture
                .ItemsSource = dt.AsDataView
                .Columns(4).CellStyle = <Stile definito nello Xaml>
            End With
 
Se possibile cosa devo scrivere in XAML e nel codice?
Grazie
 
ps. l'intento � di delegare lo stile allo XAML e richiamarlo da codice.

Ciao Andrea,
prova così:
 
myGrid.Style = DirectCast(Resources("myGridStyle"), Style)
 
Se vuoi richiamare da codice stili e quant'altro presenti nelle Resources, è sufficiente fare il "cast".

 Se vuoi richiamare da codice stili e quant'altro presenti nelle Resources, � sufficiente fare il "cast".
 
Ti ringranzio, ma ho provato a mettere questo codice ma non sembra
aggiungerlo alle Resources:
| <Application x:Class="Application"
|     xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation
"
|     xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml
"
|     StartupUri="MainWindow.xaml">
|     <Application.Resources>
| 
|         <Style TargetType="DataGridCell" x:Key="NumericRow">
|             <Setter Property="TextBlock.TextAlignment" Value="Right"/>
|             <Setter Property="TextBlock.Text" Value="{Binding number, StringFormat={}{0:n2}}"/>
|         </Style>
|       
| 
|     </Application.Resources>
| </Application>
 
Sbaglio sicuramente qualcosa io.

 Il Wed, 16 Jul 2014 04:37:04 -0700 (PDT), Fabrizio Alessandri ha scritto:
 
Prova così:
    <Application.Resources>
        <ResourceDictionary>
        	<Style x:Key="ComboBoxFocusVisual">
 
Io però comincerei a mettere le risorse a livello di Window e non di Application:
 
    <Window.Resources>
        <Style x:Key="ContentControlArticolo" TargetType="{x:Type ContentControl}">

         <Style x:Key="ContentControlArticolo" TargetType="{x:Type ContentControl}">
 
Perfetto grazie, adesso funziona (o nell'application dovevo usare
Application.Current.Resources).
 
Adesso per� ho un altro problemino, cio� come passare lo stile di
formattazione.
I due stringformat non vengono considerati, mentre gli alignment si.
 
|         <Style TargetType="DataGridCell" x:Key="NumericRow">
|             <Setter Property="TextBlock.TextAlignment" Value="Right"/>
|             <Setter Property="TextBlock.Text" Value="{Binding Number, StringFormat={}{0:n2}}"/>
|         </Style>
| 
|         <Style TargetType="DataGridCell" x:Key="DateTimeRow">
|             <Setter Property="TextBlock.TextAlignment" Value="Center"/>
|             <Setter Property="TextBlock.Text" Value="{Binding DateTime, StringFormat={}{0:MM/dd/yyyy}}"/>
|         </Style>

Non ho mai usato le Grid, quindi non conosco le sue problematiche. 
Facendo una ricerca veloce, ho trovato questo:
http://stackoverflow.com/questions/848702/need-to-format-dates-in-dynamically-built-wpf-datagrid
 


Alla fine ho usato l'approccio direttamente via XAML. Il "brutto" � che non
sempre magari posso sapere a priori quali colonne visualizzare.
Altrimenti riuscivo a fare cose tipo l'allineamento ma non la formattazione
(che si poteva comunque via codice).