MVVM绑定问题

时间:2014-07-10 07:51:19

标签: c# wpf xaml mvvm datagrid

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

private int _id

private string _name;

private int _age;

private ICollection<Grade> _grades;

我的成绩课是这样的:

private int _id

private string _gradeval;

private Student _student;

我有这样的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>

正如您所看到的,有两个数据网格。第一个显示学生信息,第二个显示在第一个数据网格中显示所选学生的成绩。我可以在文本框中轻松查看学生信息,但我无法看到所选学生的成绩。当我添加新成绩时,我可以看到成绩。但当我关闭并打开窗户时,我无法看到之前输入的成绩。但我可以在数据库中看到它们。我认为我在绑定成绩方面做错了什么,但我不知道是什么。我怎样才能解决这个问题?感谢。

0 个答案:

没有答案