WPF DataGrid – 数据绑定列到Page的ViewModel

我正在尝试将我的一个列上的数据绑定到我的页面的ViewModel中的数据(而不是网格绑定的对象)。

我在这里推荐的是什么,无济于事。

       

在我的ViewModel中

 public string JUNK { get; set; } 

在ViewModel的构造函数中设置为"HELLO"

有谁看到我做错了什么?

编辑

这是整个XAML。 相关列一直在底部,在网格内的网格中

另外 – 我无法将我的整个源码再次放到这里(不确定它是否为Citrix或者是什么)但是我采用了 datagrid按钮无关的完全相同的绑定表达式 ,并将其放到了一个普通的旧文本上TextBlock除了网格之外,它就像一个魅力。 我还在网格中添加了一个新的虚拟文本列,并为文本使用了相同的绑定表达式,但它仍然无效 。 看起来这个绑定表达式很好,但拒绝在网格附近的任何地方工作。

                                               

使用RelativeSource绑定绑定到包含DataGrid的DataContext应该工作:

  

当您嵌套DataGrids时,必须将AncestorLevel设置为“2”以绑定到最外层DataGrid的DataContext。

更新

@Danny Shisler的回答是正确的。 留下这个答案,因为它显示了如何在DataGridColumn内部进行Bindings,它不在Visual Tree中并且没有DataContext


这是一篇博文,介绍了此问题的解决方法: http : //blogs.infragistics.com/blogs/josh_smith/archive/2008/06/26/data-binding-the-isvisible-property-of-contextualtabgroup.aspx

解决方法是创建一个如下所示的DataContextSpy

DataContextSpy

 public class DataContextSpy : Freezable // Enable ElementName and DataContext bindings { public DataContextSpy() { // This binding allows the spy to inherit a DataContext. BindingOperations.SetBinding(this, DataContextProperty, new Binding()); } public object DataContext { get { return (object)GetValue(DataContextProperty); } set { SetValue(DataContextProperty, value); } } // Borrow the DataContext dependency property from FrameworkElement. public static readonly DependencyProperty DataContextProperty = FrameworkElement.DataContextProperty.AddOwner(typeof(DataContextSpy)); protected override Freezable CreateInstanceCore() { // We are required to override this abstract method. throw new NotImplementedException(); } } 

然后你可以使用DataContextSpy一个实例作为DataGridColumn Bindings的Source,就像这样