2010-03-31 51 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 
}