Почему эта привязка отображает имя класса? - PullRequest
1 голос
/ 02 сентября 2010

Что может заставить значение Silverlight 4 DataGridTextColumn.Header отображаться как System.Windows.Data.Binding , а не разрешенное значение привязки?Кажется, что где-то происходит ToString, которая отображает имя класса, а не отформатированное значение класса.

Привязка выглядит следующим образом

Header="{Binding Path=Dummy,Source={StaticResource languagingSource},Converter={StaticResource languagingConverter},ConverterParameter=vehicleDescription}"

, и проблема не лежит нигдевнутри привязки как идентичные привязки, с разными значениями ConverterParameter, отлично работают для свойств Button.Content и TextBlock.Text на одной и той же странице XAML.тот же результат.

public string DataGridHeaderDescription { get { return "Description"; } }

Header="{Binding DataGridHeaderDescription}"

Я даже пытался добавить строковый формат

Header="{Binding DataGridHeaderDescription,StringFormat=\{0\}}"

, но это также не имеет никакого эффекта.

Ответы [ 2 ]

2 голосов
/ 02 сентября 2010

Теперь возможно использовать привязки даже к элементам, которые не являются производными от FrameworkElement, однако свойство связываемого элемента должно быть определено как DependencyProperty, а Header - нет.

Поскольку заголовок - это просто маркер места для любого контента, который нужно поместить в заголовок, вы можете просто сделать это: -

<DataGridTextColumn.Header>
  <TextBlock Text="{Binding Path=Dummy,Source={StaticResource languagingSource},Converter={StaticResource languagingConverter},ConverterParameter=vehicleDescription}" />
</DataGridTextColumn.Header>
0 голосов
/ 02 сентября 2010

После некоторых дальнейших поисков я нашел эту ветку, которая отвечает на вопрос и предлагает некоторые предлагаемые решения.

Динамическая настройка текста заголовка столбца DataGrid Silverlight

...