如何将集合绑定到WPF:DataGridComboBoxColumn

不可否认我是WPF的新手,但我看了看,无法找到解决这个问题的方法。

我有一个简单的对象,如:

class Item { .... public String Measure { get; set; } public String[] Measures {get; } } 

我试图绑定到具有两个文本列和combobox列的DataGrid。 对于combobox列,属性Measure是当前选择并测量可能的值。

我的XAML是:

        

文本列显示得很好,但combobox不显示 – 根本不显示值。 绑定错误是:

System.Windows.Data错误:2:找不到目标元素的管理FrameworkElement或FrameworkContentElement。 BindingExpression:路径=措施; 的DataItem = NULL; target元素是’DataGridComboBoxColumn’(HashCode = 11497055); target属性是’ItemsSource’(输入’IEnumerable’)

我该如何解决?

谢谢

问题在于Columns没有inheritanceDataContext。

在WPF数据网格文本列中查看更多此处绑定

这里有blogs.msdn.com/vinsibal/archive/2008/12/17/wpf-datagrid-dynamically-updating-datagridcomboboxcolumn.aspx

在这里http://blogs.msdn.com/jaimer/archive/2008/11/22/forwarding-the-datagrid-s-datacontext-to-its-columns.aspx

这是最好的解决方案:

http://wpfthoughts.blogspot.com/2015/04/cannot-find-governing-frameworkelement.html

这里的想法是您将CollectionViewSource声明为静态资源,然后以声明方式将其绑定到DataGridComboBoxColumn的 ItemsSource。

创建并绑定静态CollectionViewSource:

     

然后绑定您的目标ItemsSource:

 ItemsSource="{Binding Source={StaticResource Owners}}" 

如果您的度量对所有对象都是通用的,那么您可以将度量设置为静态

 public String[] Measures { get; } 

您的xaml将使用它,如下所示:

  

希望它会有所帮助。