[Silverlight入门系列]DataGrid的Column的Header绑定

来源:互联网 时间:1970-01-01

Silverlight的DataGrid的Column有一个Header属性,一般我们这样设置Header写死”Symbol”:

如果我们想把Header绑定为Resource,比如你的Silverlight应用是多语言的,就必须绑定,这样:

你会发现Header=”{Binding MeetingName, Source={StaticResource LocStrings}}”这一行会报错。

为什么无法绑定?

因为Silverlight只有FrameworkElement才有数据绑定的上下文支持特性,其对数据绑定和资源的属性级支持通过 DependencyProperty 类来实现,并且任何 DependencyObject 都可具有 DependencyProperty,但是为可能继承的数据上下文设置值的能力由 FrameworkElement 来实现。非FrameworkElement成员要实现绑定/DataTrigger/Behavior要绕点弯路。

UIElement里面有多少FrameworkElement成员?

DataGrid的Column的Header如何绑定?

可以用ControlTemplate的方法解决,每个column这样定义:

不过这样设置ControlTemplate以后有个问题,DataGrid的列头的视觉样式(VisualStyle)没有了,很丑。改用DataTemplate的方法试一下就好了:

当然,还有一个方法设定Header就是在*.xaml.cs里面用代码动态设定了。

下一篇讲ControlTemplate和DataTemplate的区别。

 本文来自Mainz的博客,原文地址:http://www.cnblogs.com/Mainz/archive/2011/06/28/2092103.html

相关阅读:
Top