自定义列的WPF Datagrid标头绑定无法正常工作

自定义列的WPF Datagrid标头绑定无法正常工作,wpf,mvvm,binding,datagrid,Wpf,Mvvm,Binding,Datagrid,我正在尝试为列标题创建带有标签和组合框的自定义列。 第一次正确加载网格时。单击按钮,我更改了Datagrid的ITM源。我看到datagrid的单元格得到更新,但没有看到标题。我还看到加载的Datagrid_没有被调用。调试时,我发现对于Binding对象,我提供了绑定路径,但是对于header,我提供了源,因此header不会得到更新。如何为标头提供路径,使其与绑定类似 customBoundColumn类如下所示: public class CustomBoundColumn : Data

我正在尝试为列标题创建带有标签和组合框的自定义列。 第一次正确加载网格时。单击按钮,我更改了Datagrid的ITM源。我看到datagrid的单元格得到更新,但没有看到标题。我还看到加载的Datagrid_没有被调用。调试时,我发现对于Binding对象,我提供了绑定路径,但是对于header,我提供了源,因此header不会得到更新。如何为标头提供路径,使其与绑定类似

customBoundColumn类如下所示:

 public class CustomBoundColumn : DataGridBoundColumn
{
     public string TemplateSelectorName { get; set; }
     protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
    {
         var binding = new Binding(((Binding)Binding).Path.Path);
         binding.Source = dataItem;
         var content = new ContentControl();
         content.ContentTemplateSelector =(DataTemplateSelector)cell.FindResource(TemplateSelectorName);
        content.SetBinding(ContentControl.ContentProperty, binding);
       return content;
    }
    protected override FrameworkElement GenerateEditingElement(DataGridCell cell, object dataItem)
   {
       return GenerateElement(cell, dataItem);
    }
}

检查这是否可以帮助您:


在将datagrid头与ViewModel绑定时,我也遇到了同样的问题。这是一个基于xaml的解决方案。

第一次绑定对我来说很合适。但一旦我更改了itemssource,问题就产生了。[链接]:这说明了确切的问题
 public class CustomBoundColumn : DataGridBoundColumn
{
     public string TemplateSelectorName { get; set; }
     protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
    {
         var binding = new Binding(((Binding)Binding).Path.Path);
         binding.Source = dataItem;
         var content = new ContentControl();
         content.ContentTemplateSelector =(DataTemplateSelector)cell.FindResource(TemplateSelectorName);
        content.SetBinding(ContentControl.ContentProperty, binding);
       return content;
    }
    protected override FrameworkElement GenerateEditingElement(DataGridCell cell, object dataItem)
   {
       return GenerateElement(cell, dataItem);
    }
}