Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 此绑定如何更改我的原始收藏?_C#_Visual Studio_Xaml_Mvvm_Uwp - Fatal编程技术网

C# 此绑定如何更改我的原始收藏?

C# 此绑定如何更改我的原始收藏?,c#,visual-studio,xaml,mvvm,uwp,C#,Visual Studio,Xaml,Mvvm,Uwp,这是我的xaml代码: <Page.DataContext> <vm:EditStudentDataViewModel x:Name="ViewModel" /> </Page.DataContext> <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <ScrollViewer> <StackPanel Pad

这是我的xaml代码:

<Page.DataContext>
    <vm:EditStudentDataViewModel x:Name="ViewModel" />
</Page.DataContext>

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ScrollViewer>
    <StackPanel Padding="20" Margin="20">

        <TextBox  Text="{x:Bind ViewModel.STU.FirstName,Mode=TwoWay}" Header="First Name" />
        <TextBox Text="{x:Bind ViewModel.STU.LastName,Mode=TwoWay}" Header="Last Name" />
        <TextBox Text="{x:Bind ViewModel.STU.RollNumber,Mode=TwoWay}" Header="Roll Number" />
        <StackPanel Visibility="Visible" x:Name="buttons">
        <Button Content="Next" Name="Addmore"  Click="{x:Bind ViewModel.Addmore_Click}"/>
        <Button Content="Done" Name="done" Click="{x:Bind ViewModel.done_Click}"/>
        </StackPanel>
        <StackPanel Visibility="Collapsed" x:Name="edit_button" >
            <TextBox Header="Father Name" Text="{x:Bind ViewModel.STU.FatherName,Mode=TwoWay}"/>
                <TextBox Header="Mother Name" Text="{x:Bind ViewModel.STU.MotherName,Mode=TwoWay}"/>
                <TextBox Header="Father Contact No." Text="{x:Bind ViewModel.STU.FatherContactNumber,Mode=TwoWay}"/>
                <TextBox Header="Permanent Address" Text="{x:Bind ViewModel.STU.PermanetAddress,Mode=TwoWay}"/>
                <TextBox Header="Current Address" Text="{x:Bind ViewModel.STU.CurrentAddress,Mode=TwoWay}"/>
                <TextBox Header="Email Address" Text="{x:Bind ViewModel.STU.EmailAddress,Mode=TwoWay}"/>
            <Button Content="Done" Name="editbutton" Click="{x:Bind ViewModel.edit_student_data}"/>
        </StackPanel>

    </StackPanel>
    </ScrollViewer>
</Grid>
这是我在其他类中获取student对象的函数:

public static Student Selected_student()
{
    try
    {
        var stu = Teacher.all_the_classes_under_teacher.Single(x => x.classname == Selected_class_name).
        studentList.Single(x => (x.FirstName + " " + x.LastName) == selected_student_name);
        return stu;
    }catch(Exception ee)
    {
        return new Student();
        }
    }
注意:我只发布了与此问题相关的代码

我的视图中的Stament model
Student stu=Working.Selected_Student()检索所选学生。在XAML文件中,所有文本框元素都从公共属性STU检索文本。

我的主要问题很简单,但却令人困惑。公共对象的更改,即STU更改了私有对象STU,但它如何更改我原来收集的
教师。所有的\u类\u在\u教师下
我将断点放在
工作上。编辑学生数据(STU),以便我可以通过将鼠标悬停到原始集合来查看更改。

它在任何地方都会更改,因为您使用的是源集合中的学生对象的同一实例

您从所选的学生返回的学生实例是Viewmodel和xaml绑定中使用的。通过编辑绑定属性之一的文本框更改属性时;实际上,您正在编辑原始实例,它仍然位于您的集合中


Public STU
(以及
private STU
)仍然是从
Selected\u Student

返回的同一个对象,它在任何地方都会发生变化,因为您使用的是源集合中的同一个Student对象实例

您从所选的学生返回的学生实例是Viewmodel和xaml绑定中使用的。通过编辑绑定属性之一的文本框更改属性时;实际上,您正在编辑原始实例,它仍然位于您的集合中

Public STU
(以及
private STU
)仍然是从
所选学生
返回的同一对象

public static Student Selected_student()
{
    try
    {
        var stu = Teacher.all_the_classes_under_teacher.Single(x => x.classname == Selected_class_name).
        studentList.Single(x => (x.FirstName + " " + x.LastName) == selected_student_name);
        return stu;
    }catch(Exception ee)
    {
        return new Student();
        }
    }