WPF: как получить Binding.Converter - PullRequest
       19

WPF: как получить Binding.Converter

1 голос
/ 01 апреля 2010

Я создаю столбцы DataGrid с привязкой (где i - значение типа Int):

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 () в некотором обработчике, но при попытке доступа к нему нет свойства Converter:

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

Как я могу получить CellValueConverter, который был создан для конкретногоКолонка

1 Ответ

4 голосов
/ 01 апреля 2010

Это потому, что свойство Binding для DataGridBoundColumnDataGridTextColumn) фактически возвращает экземпляр BindingBase, а не Binding. BindingBase не поддерживает конвертеры.

Вы должны попытаться разыграть:

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