|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
[WPF] Utilizzare IValueConverter ma nascondere il valore nella cella
Ciao a tutti,
nella mia applicazione WPF, ho una colonna età che comprendere un range da 0 a 100. Sto usando un Convert per impostare un colore di sfondo a una singola cella secondo sei range da me impostati.... Vorrei colorare la cella, ma nascondere il valore numerico. La colorazione funziona, ma non riesco a nascondere il valore... Come posso fare questo? Questo è il mio codice: XAML: Codice:
<DataGridTextColumn Binding="{Binding Age}" Header="Age - Color Range" Width="200">
<!-- COLOR CELLA -->
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background" Value="{Binding Age, Converter={StaticResource ColorToCell}}"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
Codice:
public class ColorToCell : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int tempValue = int.Parse(value.ToString());
string tempString = "Red";
if (tempValue >= 0 && tempValue <= 20)
tempString = "#FF0000";
if (tempValue > 20 && tempValue <= 40)
tempString = "#F09300";
if (tempValue > 40 && tempValue <= 60)
tempString = "#EDDF00";
if (tempValue > 60 && tempValue <= 80)
tempString = "#CC00FF55";
if (tempValue > 80 && tempValue <= 100)
tempString = "#85AB00";
SolidColorBrush brush = new SolidColorBrush();
BrushConverter conv = new BrushConverter();
brush = conv.ConvertFromString(tempString) as SolidColorBrush;
return brush;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return DependencyProperty.UnsetValue;
}
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Se setti anche il foreground allo stesso colore? Il valore ci sarebbe lo stesso ma non si vedrebbe...
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Giusta, ottima soluzione:
Codice:
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background" Value="{Binding Age, Converter={StaticResource ColorToCell}}"/>
<Setter Property="Foreground" Value="{Binding Age, Converter={StaticResource ColorToCell}}"/>
</Style>
</DataGridTextColumn.ElementStyle>
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Quote:
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Uhm, cioè?
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Quote:
DataGridTextColumn rappresenta una cella all'interno del controllo DataGrid che ospita un contenuto testuale, no? Potrei usare un altro approccio? |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Quote:
Se però, come da tua richiesta, non vuoi visualizzare testo ma solo un colore (se non ho capito male la richiesta) non hai bisogno di questa tipologia di colonna. Puoi definire una DataGridTemplateColumn, e settare il suo template come un semplice rettangolo, nel quale definirai il background come fatto in precedenza. |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Grazie Kendall,
mi sto avvicinando da poco al mondo WPF e non conosco bene ancora queste sottili differenze. Seguendo il tuo suggerimento ho ottenuto l'effetto desiderato: Codice:
<DataGridTemplateColumn Header="Age 1 - Color Range" Width="200">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Rectangle Width="200" Height="16">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding Age, Converter={StaticResource ColorToCell}}"></SolidColorBrush>
</Rectangle.Fill>
</Rectangle>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Grazie. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Io a suo tempo ho trovato molto piacevoli da leggere e ben scritti i libri di Adam Nathan.
Nello specifico puoi leggerti WPF 4.5 Unleashed che è abbastanza recente. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Grazie, gentilissimo!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:19.




















