【问题标题】:WPF Datagrid header binding for custom columns not getting working自定义列的 WPF Datagrid 标题绑定无法正常工作
【发布时间】:2014-03-18 07:45:53
【问题描述】:

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

private void DataGrid_Loaded(object sender, RoutedEventArgs e)
{
    DataGrid grid = sender as DataGrid;
    if (grid.Items.Count == 0)
    {
        return;
    }
   StageVM data = grid.Items[0] as StageVM;
    if (data == null)
    {
        return;
    }
    int index = 0;
    foreach (StageItemVM param in data.Stage)
    {
        var binding = new Binding(string.Format("Stage[{0}].StageItem.Value", index));
        grid.Columns.Add(new CustomBoundColumn()
        {
            CanUserSort = false,
            HeaderTemplateSelector = this.FindResource("ColumnHeaderTemplateSelector") as  DataTemplateSelector,
            HeaderStyle = this.FindResource("StageHeaderStyle") as Style,
            Header = (new Binding().Source = param.StageItem.Key),
            Binding = binding,
            TemplateSelectorName = "StageRangeColumnTemplateSelector"
        });
        index++;
    }
}

而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);
    }
}

【问题讨论】:

    标签: wpf mvvm binding datagrid


    【解决方案1】:

    检查这是否可以帮助您: WPF DataGridTextColumn header binding

    我在将数据网格标题与我的 ViewModel 绑定时遇到了同样的问题。这是一个基于 xaml 的解决方案。

    【讨论】:

    猜你喜欢
    • 2011-01-12
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多