我在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
......但没有用。
怎么可能?
答案 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
方法。