DataGridTemplateColumns, AutoGenerateColumns=true and binding to a DataTable

前端 未结 3 2024
孤独总比滥情好
孤独总比滥情好 2021-01-21 03:12

I\'m struggling with a confluence of problems.

  1. I have a dynamic data set which I manually assemble into a DataTable.
  2. I have to auto generate the columns a
3条回答
  •  Happy的楠姐
    2021-01-21 03:58

    I dont know how to do this with DataTemplate from XAML resources, but it work fine for me with DataTemplate created in code.

    private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        System.Windows.Controls.DataGridTemplateColumn templateColumn = new System.Windows.Controls.DataGridTemplateColumn();
        templateColumn.Header = e.PropertyName;
    
        DataTemplate template = new DataTemplate();
        FrameworkElementFactory factory = new FrameworkElementFactory(typeof(StackPanel));
        template.VisualTree = factory;
        FrameworkElementFactory childFactory = new FrameworkElementFactory(typeof(TextBox));
        childFactory.SetBinding(TextBox.TextProperty, new Binding(e.PropertyName));
        factory.AppendChild(childFactory);
    
        templateColumn.CellEditingTemplate = template;
    
        template = new DataTemplate();
        factory = new FrameworkElementFactory(typeof(StackPanel));
        template.VisualTree = factory;
        childFactory = new FrameworkElementFactory(typeof(TextBlock));
        childFactory.SetBinding(TextBlock.TextProperty, new Binding(e.PropertyName));
        factory.AppendChild(childFactory);
        templateColumn.CellTemplate = template;
    
        e.Column = templateColumn;
    }
    

提交回复
热议问题