什么可能导致Silverlight 4 DataGridTextColumn.Header的值显示为 System.Windows.Data.Binding 而不是解析的绑定值?似乎ToString正在某处显示一个类名而不是该类的格式化值。
绑定看起来像这样
Header="{Binding Path=Dummy,Source={StaticResource languagingSource},Converter={StaticResource languagingConverter},ConverterParameter=vehicleDescription}"
并且问题不在于绑定中的任何位置,因为具有不同ConverterParameter值的相同绑定适用于同一XAML页面中的Button.Content和TextBlock.Text属性。
即使在本地数据上下文中创建这样的简单字符串属性也会产生相同的结果。
public string DataGridHeaderDescription { get { return "Description"; } }
Header="{Binding DataGridHeaderDescription}"
我甚至尝试过添加字符串格式
Header="{Binding DataGridHeaderDescription,StringFormat=\{0\}}"
但这也没有效果。
答案 0 :(得分:2)
现在可以在非FrameworkElement
派生的元素上使用绑定,但是绑定元素的属性必须定义为DependencyProperty
Header
不是<DataGridTextColumn.Header>
<TextBlock Text="{Binding Path=Dummy,Source={StaticResource languagingSource},Converter={StaticResource languagingConverter},ConverterParameter=vehicleDescription}" />
</DataGridTextColumn.Header>
由于Header只是放置在标题中的任何内容的位置标记,因此您可以这样做: -
{{1}}
答案 1 :(得分:0)
经过一些进一步的搜索后,我发现这个帖子回答了这个问题并给出了一些建议的解决方案。
Dynamically setting the Header text of a Silverlight DataGrid Column