简体   繁体   English

当AutogenerateColumns == True时,是否可以向DataGrid添加更多列?

[英]Is it possible to add more columns to a DataGrid when AutogenerateColumns==True?

Simply put, I have a DataGrid in my XML file that I bound to a list - in this example, a list of Person s. 简单地说,我在我的XML文件中有一个DataGrid ,我绑定到一个列表 - 在本例中,是一个Person列表。 However, I also want an extra column, as all entries in this list are going to be a subclass of Person , ie PersonWithAge . 但是,我还想要一个额外的列,因为此列表中的所有条目都将成为Person的子类,即PersonWithAge I am not allowed to change the type of ListOfPeople , though. 但是我不允许更改ListOfPeople的类型。

If I add the column in XAML manually, it crashes right away. 如果我手动在XAML中添加列,它会立即崩溃。 How can I add this columns and synchronise it with all the rest? 如何添加此列并将其与所有其他列同步? Is there some way to cast it within the XAML file? 有没有办法在XAML文件中强制转换它? Or can one be added in the m_grid_AutoGeneratingColumn method? 或者可以在m_grid_AutoGeneratingColumn方法中添加一个?

This is my code: 这是我的代码:

// In MyGridView.xaml.cs
public class MyGridView
{
    public ObservableCollection<Person> ListOfPeople { get; set; }

    private void m_grid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
    {
        /* Some formatting here... */
    }
}

public class Person
{
    public string Name { get; set; }
}

public class PersonWithAge : Person
{
    public int Age{ get; set; }
}

And the XAML code: 和XAML代码:

// MyGridView.xaml
<UserControl x:Class="Project.MyGridView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>    
         <DataGrid Name="m_myGrid" 
                   ItemsSource="{Binding ListOfPeople}
                   AutoGenerateColumns="True" AutoGeneratingColumn="m_grid_AutoGeneratingColumn" >
                <!--DataGridTextColumn Header="Age" /-->  <!-- This makes the thing crash -->
         </DataGrid >
    </Grid>
</UserControl>

Move columns you are adding in DataGrid.Columns 移动要在DataGrid.Columns中添加的列

    <DataGrid Name="m_myGrid" 
               ItemsSource="{Binding ListOfPeople}
               AutoGenerateColumns="True" AutoGeneratingColumn="m_grid_AutoGeneratingColumn" >
            <DataGrid.Columns>
               <DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
            </DataGrid.Columns>
     </DataGrid >

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 AutoGenerateColumns = True 时如何重命名 DataGrid 列? - How do you rename DataGrid columns when AutoGenerateColumns = True? 仅当AutoGenerateColumns = true时,Datagrid才能工作 - Datagrid only works when AutoGenerateColumns = true 当AutoGenerateColumns设置为True时,如何停止在DataGrid中生成特定列? - how to stop a specific column to be generated in DataGrid when the AutoGenerateColumns is set to True? 当AutoGenerateColumns =“ True”时,使datagrid的特定列成为组合框 - Make particular column of datagrid a combobox when AutoGenerateColumns=“True” 当CustomControl DataGrid(WPF Datagrid)中的AutoGenerateColumns = false时,DataGrid.Columns中提到的列不可见 - Columns mentioned in DataGrid.Columns is not visible when AutoGenerateColumns=false in CustomControl DataGrid (WPF Datagrid) 将删除按钮添加到设置为AutoGenerateColumns的datagrid吗? - Add delete button to datagrid that are set to AutoGenerateColumns? MVVM-根据列名称隐藏Datagrid列,其中autogeneratecolumns = True - MVVM - Hide Datagrid column based on column name with autogeneratecolumns = True DataGrid AutoGenerateColumns =“True” - 如何附加一个额外的列? - DataGrid AutoGenerateColumns=“True” - how to append one extra column? 当 AutoGenerateColumns=true WPF 时绑定 DataGridComboBoxColumn - Binding DataGridComboBoxColumn when AutoGenerateColumns=true WPF 带有AutoGenerateColumns的WPF Datagrid中的ItemTemplateSelector - ItemTemplateSelector in WPF Datagrid with AutoGenerateColumns
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM