2011-12-13 61 views
1

我怎樣才能得到一個DataGridTextColumn顯示' - '(連字符),而不是。WPF DataGridTextColumn - 使用 ' - ' 而不是 '0'

下面是數據網格如何目前設置:

<Grid> 
    <DataGrid x:Name="EmployeeHours" 
      AutoGenerateColumns="False" 
      ItemsSource="{Binding EmployeeHoursLastWeek}" 
      Width="Auto"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="PerceptionistID" 
          Binding="{Binding PerceptionistID}" 
          Width="100" /> 
     <DataGridTextColumn Header="Week Of" 
          Binding="{Binding WeekOf, StringFormat={}{0:MM/dd/yyyy}}" 
          Width="75" /> 
     <DataGridTextColumn Header="Regular Hours" 
          Binding="{Binding WorkHours}" 
          Width="100" /> 
     <DataGridTextColumn Header="PTO Hours" 
          Binding="{Binding PTOHours}" 
          Width="100" /> 
     <DataGridTextColumn Header="Holiday Hours" 
          Binding="{Binding HolidayHours}" 
          Width="100" /> 
    </DataGrid.Columns> 
    </DataGrid> 
</Grid> 

PTOHours和HolidayHours通常是0,它會更容易地識別出具有0以外的值,如果用0任何單元格中顯示一個' - 而是。

回答

4

你可以使用一個值轉換爲它

<Grid> 
    <Grid.Resources> 
    <local:HoursToMinusConverter x:Key="HoursToMinusConverter" /> 
    </Grid.Resources> 

    <DataGrid x:Name="EmployeeHours" 
      AutoGenerateColumns="False" 
      ItemsSource="{Binding EmployeeHoursLastWeek}" 
      Width="Auto"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="PerceptionistID" 
          Binding="{Binding PerceptionistID}" 
          Width="100" /> 
     <DataGridTextColumn Header="Week Of" 
          Binding="{Binding WeekOf, StringFormat={}{0:MM/dd/yyyy}}" 
          Width="75" /> 
     <DataGridTextColumn Header="Regular Hours" 
          Binding="{Binding WorkHours}" 
          Width="100" /> 
     <DataGridTextColumn Header="PTO Hours" 
          Binding="{Binding PTOHours, Converter={StaticResource HoursToMinusConverter}}" 
          Width="100" /> 
     <DataGridTextColumn Header="Holiday Hours" 
          Binding="{Binding HolidayHours, Converter={StaticResource HoursToMinusConverter}}" 
          Width="100" /> 
    </DataGrid.Columns> 
    </DataGrid> 
</Grid> 

這裏是轉換器

public class HoursToMinusConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { 
    if (value is int) { 
     return (int)value > 0 ? value.ToString() : "-"; 
    } 
    return string.Empty; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { 
    if (value is string) { 
     int intValue; 
     if (!int.TryParse((string)value, out intValue)) { 
     intValue = 0; 
     } 
     return intValue; 
    } 
    return 0; 
    } 
} 

希望這有助於

+0

就像一個魅力。由於這些列的數據是十進制類型,因此必須添加'else if'。 – BrianKE 2011-12-14 04:03:58