c# XAML中的自定义数据网格不起作用



我的XAML中有这个DataGrid:

<DataGrid Width="250" Height="250" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding PersonList}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="Name" Width="200"/>
<DataGridTextColumn Binding="{Binding Age}" Header="Alter" Width="50"/>
</DataGrid.Columns>
</DataGrid>

这是我的ViewModel:

private readonly MyPersonContext db = new MyPersonContext();
public MyViewModel()
{
personList = db.Persons.ToList();
}
private List<Person> personList;
public List<Person> PersonList
{
get => personList;
set { 
personList = value;
RaisePropertyChangedEvent(nameof(PersonList));
}
}

问题是,我的自定义DataGrid显示,但之后所有的数据库内容显示

DataGrid上设置AutoGenerateColumns为false:

<DataGrid Width="250" Height="250" IsSynchronizedWithCurrentItem="True" 
ItemsSource="{Binding PersonList}"
AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="Name" Width="200"/>
<DataGridTextColumn Binding="{Binding Age}" Header="Alter" Width="50"/>
</DataGrid.Columns>
</DataGrid>

默认值是true,因此DataGrid将生成所有列,除非它被关闭。

我不确定我是否正确理解问题陈述,你说所有DB内容都显示-这是否意味着所有列都显示或所有行,如果行,不是意图吗?

我想在代码块中纠正的一件事是,在构造函数中,您正在初始化personlist的私有成员,请尝试这样写-

public MyViewModel() { PersonList = db.Persons.ToList(); }

最新更新