问题绑定 DataGridComboBoxColumn.ItemsSource

33 浏览
0 Comments

问题绑定 DataGridComboBoxColumn.ItemsSource

我有3个表:

Item - 它是DataContext - 它有一个导航列Group

Group - 有一个导航列Category。

我想在DataGrid中同时显示(Category & Group)两列,当我选择一个类别时,它应该只在组列中显示Category.Groups。

以下是我正在使用的代码:


    
        
        
        
        
        
            
                
                    
                        
                            
                                
                            
                        
                    
                
            
        
        
        
        
    

更新

你会说问题是ItemsSource属性不能设置为非静态绑定吗?

我怀疑是这样,因为即使我将ItemsSource设置为{Binding}并使用DummyConverter,它也不会停在转换器上;而在类别ComboBox中它工作得很好。

0
0 Comments

问题:绑定DataGridComboBoxColumn.ItemsSource时遇到问题

原因:使用MVVM模式时,将列的ItemSource绑定到窗口数据上下文中的对象集合。尝试了多种方法,但都没有成功,直到找到这个答案。解决方法是在网格外部定义一个CollectionViewSource,然后在网格内部使用StaticResource引用它。

解决方法:


    



    

相比使用代理元素,我认为这个方法更简单。谢谢!

0
0 Comments

问题出现的原因是数据网格中的列没有数据上下文,因为它们从未添加到可视树中。这可能听起来有点奇怪,但是查看 Vince 的博客,它有一个良好的可视布局示例。一旦网格被绘制,单元格就会有数据上下文,您可以使用普通绑定(而不是静态资源)在它们中设置组合框的项源。

解决方法是通过以下方式访问组合框的项源:


   
      
   

您可以在这里参考一些代码:[stackoverflow链接](https://stackoverflow.com/questions/1633800)和[wpf.codeplex链接](http://wpf.codeplex.com/Thread/View.aspx?ThreadId=46627)。您还需要根据这个[帖子](https://stackoverflow.com/questions/1903057)为非编辑元素设置项源。

对于.NET 4.0的数据网格如何使其工作?Vince 的博客似乎已经过时了。我不认为数据网格的组合列在.NET 4版本中有变化。我使用了相同的方法,但是数据源似乎没有绑定到列上。在数据网格中我看到一个空的组合框,尝试在其上加上一个 DebugConverter 并查看绑定是否触发(可以参考 [wpftutorial.net/DebugDataBinding.html](http://wpftutorial.net/DebugDataBinding.html))。难道只要针对具有数据上下文的特定 ElementName,它也能工作吗?我知道这是老问题,但是对我来说{Binding MyBindingPath}而不是{Binding Path=MyBindingPath}也能运行。

0