WPF 数据网格绑定字段

WPF Datagrid Binding field

我有这样一个class,

public class Class1
{
    public bool IsSelected { get; set; } = false;
    public List<BaseInfo> baseInfos { get; set; }
}

和数据网格

<DataGrid
            hc:DataGridAttach.CanUnselectAllWithBlankArea="True"
            AutoGenerateColumns="True"
            AutoGeneratingColumn="DataGrid_AutoGeneratingColumn"
            HeadersVisibility="All"
            IsReadOnly="True"
            ItemsSource="{Binding Class1}"
            RowHeaderWidth="60">
            <DataGrid.RowHeaderTemplate>
                <DataTemplate>
                    <CheckBox IsChecked="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=DataGridRow}}" />
                </DataTemplate>
            </DataGrid.RowHeaderTemplate>
        </DataGrid>

我真的做不到 baseInfos 设置AutoGenerateColumns="True" 自动生成的Columns 应该怎么做, 提前致谢!

ItemsSource 绑定应该是一个列表而不是单个 class,并且 IsSelected 应该是 BaseInfo 内部的 属性 而不是外部的东西!! 无法理解为什么你有 Class1 因为它对任何事情都没有帮助!!

所以将 public bool IsSelected { get; set; } = false; 添加到 class BaseInfo。类似的东西:

public class BaseInfo {
     public bool IsSelected { get; set; } = false;
     public string Name { get; set; }
     public string SOMETHING { get; set; }
}

AutoGenerateColumns 属性会自动为你创建空列,

但是如果你想创建新行,你需要创建一个 Class1 的列表并将它绑定到 ItemSource

.cs:

    public List<Class1> ClassList
    {
        get
        {
            return classList?? (classList= new List<Class1>());
        }
        set
        {
            classList= value;
        }
    }
    List<Class1> classList;

添加一些项目:

ClassList.Add(new Class1
                {
                    IsSelected = true,
                });
                ClassList.Add(new Class1
                {
                    IsSelected = true,
                });

xaml:

<DataGrid ItemsSource="{Binding ClassList}">
</DataGrid>