假设我的代码后面有一堆本地常量,我想用作标题,例如:
const string TYPE_HEADER = "Type";
const string LOCATION_ HEADER = "Location";
等
有什么方法可以将我的DataGridColumns的标头绑定到这些类似事件绑定到本地方法,例如:
<data:DataGridTextColumn Header="{Binding TYPE_HEADER}" />
可以这样做吗?也许通过使用一些动态的ResourceDictionary或什么?
答案 0 :(得分:1)
TYPE_HEADER必须是字符串属性(它可以由const支持)。制作容器:
public class MyStaticDataProvider
{
public string TYPE_HEADER { get { return "blkajsd"; } }
}
在你的usercontrol声明下面:
<UserControl.Resources>
<ResourceDictionary>
<MyNamespace:MyStaticDataProvider x:Key="NameProvider" />
</ResourceDictionary>
</UserContro.Resources>
标题:
Header="{Binding Path=TYPE_HEADER, Source={StaticResource NameProvider}, Mode=OneTime}"
如果silverlight支持x:Static会更容易,但它不会。见Silverlight 4 Equivalent to WPF "x:static"
答案 1 :(得分:0)
看来如果不编辑DataGridTextColumn的控件模板就无法完成,因为Header不是FrameworkElement ......
Dynamically setting the Header text of a Silverlight DataGrid Column