2011-04-13 45 views
0

我想從WinForms轉換爲WPF,並且掙扎了一下DataGridView - > WPF DataGrid。WPF DataGrid'CellFormatting Equivalent'

我已經加載好所有的數據,只是卡在單元格格式。

有一列有數字,但如果數字爲零,而不是顯示0,我希望它顯示NIL。

隨着DataGridView中,下面的工作

Private Sub SampleDGV_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles SampleDGV.CellFormatting 

    Try 
     If e.RowIndex >= 0 And e.ColumnIndex = SampleDGV.Columns(CostColumn.Name).Index Then 
      If CDec(e.Value.ToString) = 0 Then 
       e.Value = "NIL" 
       e.FormattingApplied = True 
      End If 
     End If 
    Catch ex As Exception 

    End Try 


End Sub 

但現在我難倒了WPF相當於

回答

0

我不知道如果有一個簡單的方法來做到這一點,我會做到這一點這樣這似乎工作:

定義自定義列使用自定義轉換器:

<DataGrid.Resources> 
    <local:ZeroToNilConverter x:Key="ZeroToNilConverter"/> 
</DataGrid.Resources> 
<DataGrid.Columns> 
    <DataGridTextColumn Binding="{Binding Id, Converter={StaticResource ZeroToNilConverter}}" Header="Test"/> 
</DataGrid.Columns> 
//Sorry, i do not speak VB... 
public class ZeroToNilConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     int input = 0; 
     try 
     { 
      input = (int)value; 
     } 
     catch (Exception) 
     { 
      return value; 
     } 

     if (input == 0) return "NIL"; 
     else return value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     string input = value as string; 
     if (input != null) 
     { 
      if (input == "NIL") return 0; 
      else return value; 
     } 
     else 
     { 
      return value; 
     } 
    } 
} 
+0

感謝隊友,工作完美。 – 2011-04-14 02:21:49