2013-02-20 2 views
0

У меня есть DataGridTextColumn, который принимает числа из таблицы базы данных, называемой Numbers. Если число в ячейке положительное, чем я хочу, чтобы следующий DataGridTextColumn имел слово «Positive» внутри. Я пробовал с помощью IConverter Styles, но все еще не знаю, как это сделать. Я надеюсь, что кто-то может мне помочь.Изменение DataGridCell, если число положительное или отрицательное

Это мой код до сих пор:

<DataGrid Grid.Row="0" Grid.Column="1" AutoGenerateColumns="False" IsReadOnly="false" CanUserAddRows="True" Margin="5,5,10,5" ItemsSource="{Binding ElementName=Numbers}"> 

     <DataGrid.Columns> 
      <DataGridTextColumn Binding="{Binding Num}" Header="Number" FontSize="16"/> 

      <DataGridTextColumn Header="Positive/Negative" FontSize="16"> 

       <DataGridTextColumn.ElementStyle> 
        <Style TargetType="{x:Type TextBlock}"> 
         <Setter Property="Text" Value="{Binding Amount, Converter={StaticResource PositiveNegativeConverter}}"/> 
        </Style> 
       </DataGridTextColumn.ElementStyle> 
      </DataGridTextColumn> 
    </DataGrid> 

У меня также есть это внутренние ресурсы:

<local:PositiveNegativeConverter x:Key="PositiveNegativeConverter"/> 
</UserControl.Resources>  

Мой конвертер выглядит следующим образом:

class PositiveNegativeConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     bool revert = (parameter as string).StartsWith("-"); 

     string stringValue = value as string; 
     string compareValue = parameter as string; 

     if (revert) 
     { 
      return "Negative"; 
     } 
     else 
      return "Positive"; 
    } 
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotSupportedException(); 
    } 
} 

ответ

3

У вас нет чтобы добавить стиль для этого, просто добавьте конвертер в Binding в DataGridTextColum п.

Что-то вроде этого:

<DataGridTextColumn Binding="{Binding Num, Converter={StaticResource PositiveNegativeConverter}}" Header="Number" FontSize="16"/> 
+0

Я получаю NullReferenceException в: BOOL Revert = (параметр в виде строки) .StartsWith ("-"); Может быть, becouse Num возвращает двойные числа, а не строки? – Georg

+0

О, теперь он работает ... Мне нужно сначала преобразовать значение в String с помощью метода ToString(). Thx Cristian – Georg

+0

Я принял Кристиан ответить, но только любопытство есть ли возможность показать тексты разного цвета? Положительный с зеленым и негативным цветом? – Georg