2010-03-31 31 views
1

創建DataGrid列用結合(其中i爲int值):WPF:如何獲得Binding.Converter

dataGrid.Columns.Add(new DataGridTextColumn 
{ 
    Header = i.ToString(), 
    Binding = CreateBinding(i), 
}); 

private Binding CreateBinding(int num) 
{ 
    Binding bind = new Binding(string.Format("[{0}]", num));   
    bind.Converter = new CellValueConverter(); 
    return bind; 
} 

在CreateBinding方法我要bind.Converter屬性的訪問。
我需要調用Converter.Convert()方法中的一些處理,但沒有轉換屬性,當我嘗試訪問它:

(dataGrid.Columns[clm] as DataGridTextColumn).Binding."no Converter property!" 

我怎樣才能讓我的CellValueConverter這是爲特定的列創建?

回答

4

這是因爲Binding財產上DataGridBoundColumn(和DataGridTextColumn)的實際返回BindingBase實例,而不是一個BindingBindingBase不支持轉換器。

你應該可以嘗試投:

var binding = (dataGrid.Columns[clm] as DataGridBoundColumn).Binding as Binding; 
if(binding != null) 
{ 
    IValueConverter converter = binding.Converter; // Will work here 
}