C# MVVM绑定问题

C# MVVM绑定问题,c#,wpf,xaml,mvvm,datagrid,C#,Wpf,Xaml,Mvvm,Datagrid,我的问题是:我有一个这样的学生班: private int _id private string _name; private int _age; private ICollection<Grade> _grades; 我有一个类似这样的StudentVM文件,我没有用于评分的VM: private string _nameui; private int _ageui; 我有以下xaml文件: <Window x:Class="CodeFirstMVVM.App.M

我的问题是:我有一个这样的学生班:

private int _id

private string _name;

private int _age;

private ICollection<Grade> _grades;
我有一个类似这样的StudentVM文件,我没有用于评分的VM:

private string _nameui;

private int _ageui;
我有以下xaml文件:

<Window x:Class="CodeFirstMVVM.App.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:vm="clr-namespace:CodeFirstMVVM.App.ViewModels"
        xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
        mc:Ignorable="d"
        DataContext="{Binding Source={StaticResource Locator}, Path=StudentView}"
        Title="MainWindow" Height="500" Width="900">
    <Grid>
        <Canvas>
            <TextBox Height="23" Canvas.Left="131" TextWrapping="Wrap"  Canvas.Top="51" Width="283" Name="txtName" Text="{Binding NameUI}"/>
            <TextBox Height="23" Canvas.Left="131" TextWrapping="Wrap"  Canvas.Top="86" Width="283" Name="txtAge" Text="{Binding AgeUI}"/>
            <DataGrid x:Name="dg01" ItemsSource="{Binding Entities, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedEntity}" CanUserAddRows="False" Canvas.Left="25" Canvas.Top="201" AutoGenerateColumns="False" IsReadOnly="True" >
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Name}" Header="Name" Width="200" />
                    <DataGridTextColumn Binding="{Binding Age}" Header="Age" Width="50" />

                </DataGrid.Columns>
            </DataGrid>

            <DataGrid ItemsSource="{Binding ElementName =dg01, Path=SelectedItem.Grades, Mode=TwoWay}"  Canvas.Left="622" Canvas.Top="201" AutoGenerateColumns="False" >
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding GradeValue}" Header="Grades"></DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>

        </Canvas>
    </Grid>
</Window>


如您所见,有两个数据网格。第一个显示学生信息,第二个显示第一个数据网格中所选学生的成绩。我可以很容易地在文本框中看到学生信息,但我看不到所选学生的成绩。当我添加新等级时,我可以看到等级。但当我关闭并打开窗口时,我看不到以前输入的成绩。但我可以在数据库中看到它们。我想我在绑定分数方面做错了什么,但我不知道是什么。我怎样才能解决这个问题?谢谢。

请同时提供ViewModel和Model。您是否可以查看Visual Studio的
输出
窗口在运行时是否出现任何错误?这将给我们提供更多的工作。@aevitas没有错误。您确定用分数项正确填充模型吗?如果中断执行,
SelectedEntity.Grades
是否有任何元素?如何检查?我对这个有点陌生。。。在尝试使用该语言之前,您可以阅读教程以实际学习该语言。我假设你在学习开车之前不会尝试开车,那么编程有什么不同呢?
<Window x:Class="CodeFirstMVVM.App.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:vm="clr-namespace:CodeFirstMVVM.App.ViewModels"
        xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
        mc:Ignorable="d"
        DataContext="{Binding Source={StaticResource Locator}, Path=StudentView}"
        Title="MainWindow" Height="500" Width="900">
    <Grid>
        <Canvas>
            <TextBox Height="23" Canvas.Left="131" TextWrapping="Wrap"  Canvas.Top="51" Width="283" Name="txtName" Text="{Binding NameUI}"/>
            <TextBox Height="23" Canvas.Left="131" TextWrapping="Wrap"  Canvas.Top="86" Width="283" Name="txtAge" Text="{Binding AgeUI}"/>
            <DataGrid x:Name="dg01" ItemsSource="{Binding Entities, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedEntity}" CanUserAddRows="False" Canvas.Left="25" Canvas.Top="201" AutoGenerateColumns="False" IsReadOnly="True" >
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Name}" Header="Name" Width="200" />
                    <DataGridTextColumn Binding="{Binding Age}" Header="Age" Width="50" />

                </DataGrid.Columns>
            </DataGrid>

            <DataGrid ItemsSource="{Binding ElementName =dg01, Path=SelectedItem.Grades, Mode=TwoWay}"  Canvas.Left="622" Canvas.Top="201" AutoGenerateColumns="False" >
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding GradeValue}" Header="Grades"></DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>

        </Canvas>
    </Grid>
</Window>