我的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(); }