Non è possibile accedere DataGridCell.Content
in questo modo, utilizzare un DataTrigger
invece, sulla base di DataGrid.SelectedItem.YourProperty
come questo:
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="FontWeight" Value="Bold" />
<Style.Triggers>
<DataTrigger Binding="{Binding YourProperty}" Value="0">
<Setter Property="FontWeight" Value="Normal"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
EDIT:
Assumendo che il DataGridColumns
sono basati su testo, è possibile utilizzare un IValueConverter
come di seguito:
Si noti che se alcune colonne della griglia di dati non sono basate su testo , questa soluzione funziona ancora per quelle colonne che sono.
Xaml:
<Window.Resources>
<local:FontWeightConverter x:Key="fontWeightConverter"/>
</Window.Resources>
...
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Setters>
<Setter Property="FontWeight"
Value="{Binding RelativeSource={RelativeSource Self},
Path=Content.Text,
Converter={StaticResource fontWeightConverter}}" />
</Style.Setters>
</Style>
</DataGrid.CellStyle>
Converter:
public class FontWeightConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
if (value != null && value.ToString() == "0")
return FontWeights.Normal;
return FontWeights.Bold;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
fonte
2015-06-17 08:48:27
Sembra buono ma ne ho bisogno per tutte le proprietà del mio oggetto. Non voglio replicare 12 volte questo codice che sono sicuro di funzionare – Galma88
Perfetto. La tua modifica funziona. Quindi presumo che non ci sia modo di farlo solo in XAML. È corretto? – Galma88
Sono sicuro al 99% che non ci sia;) –