动态更改WPF Datagrid列标题

时间:2011-10-27 14:23:24

标签: wpf data-binding datagrid

我在wpf win应用程序中使用wpf toolkit datagrid。在我的视图模型中,我有一个observablecollection属性,该属性绑定到datagrid的itemsource。 Student类具有Name,Age,Class属性并显示在网格的每个列中。

但是我的View模型类中有一个名为“Header1”的属性,以及如何将其绑定到数据网格文本列的Header?当我使用时,它不会在网格中显示标题字符串。我需要在运行时更新此列标题。我怎么能这样做?我也尝试了以下方式;

<dg:DataGridColumn Header = "{Binding Header1, ElementName=MyUsrCtrl}" />

但这也不起作用?我也使用了DataContext.Header1, ElementName=MyUsrCtrl ......但没有用。

怎么可能?

2 个答案:

答案 0 :(得分:2)

您无法绑定到任何daatgrid列,因为它们不是可视树的一部分。使用代理元素技巧。

WPF Error: Cannot find governing FrameworkElement for target element

答案 1 :(得分:-1)

在不了解你的代码的情况下,我只是对此嗤之以鼻,但我们走了。我假设您已使用DataContext将整个视图绑定到视图模型,并且ItemsSource绑定DataGrid这样的内容:

<dg:DataGrid ItemsSource="{Binding MyCollection}" />

假设这是真的,那么你的大部分方式都是你的标题绑定。只需删除绑定的ElementName部分,如下所示:

<dg:DataGridColumn Header = "{Binding Header1}" />

这应该可以解决问题。另外需要注意的是确保视图模型实现INotifyPropertyChanged并且Header1属性的setter会为自己调用PropertyChanged方法。