C# 实体框架加载和本地以获取ObservableCollection

C# 实体框架加载和本地以获取ObservableCollection,c#,wpf,entity-framework,observablecollection,C#,Wpf,Entity Framework,Observablecollection,我无法获取更新结果并将其显示到datagrid中,以下是我的代码: Xaml: <Button Content="Button" Click="Button_Click" Margin="0,90,0,116" /> <DataGrid x:Name="manPowerOrgDataGrid" ItemsSource="{Binding}" Margin="0,0,0,184"> </DataG

我无法获取更新结果并将其显示到datagrid中,以下是我的代码:

Xaml:

<Button Content="Button"
        Click="Button_Click"
        Margin="0,90,0,116" />
<DataGrid x:Name="manPowerOrgDataGrid"
          ItemsSource="{Binding}"
          Margin="0,0,0,184">
</DataGrid>
保存更改并刷新:

private void Button_Click(object sender, RoutedEventArgs e)
{
    using (DesignerEntities db=new DesignerEntities())
    {
        db.ManPowerOrgs.Add(new ManPowerOrg() { Caption = "A", Number = 1, SMonth = 100 });
        db.SaveChanges();
        manPowerOrgDataGrid.Items.Refresh();
    }
}

但是更新后的结果不会显示在我的UI上

我建议不要直接绑定到DbSet。使用ObservableCollection可能更合适

例如:

public ObservableCollection<ManPowerOrg> MyList = new ObservableCollection<ManPowerOrg>();
  public Window1()
    {
        InitializeComponent();

        using (DesignerEntities db = new DesignerEntities())
        {
            foreach (var item in db.ManPowerOrgs.ToList())
            {
                MyList.Add(item);
            }
        }
       DataContext = this;
    }


 private void Button_Click(object sender, RoutedEventArgs e)
    {
        using (DesignerEntities db = new DesignerEntities())
        {
            ManPowerOrg myItem = new ManPowerOrg() {Caption = "A", Number = 1, SMonth = 100};
            db.ManPowerOrgs.Add(myItem);
            db.SaveChanges();
            MyList.Add(myItem);
        }
    }
然后别忘了更改绑定:

  <DataGrid x:Name="manPowerOrgDataGrid"
      ItemsSource="{Binding MyList}"
      Margin="0,0,0,184">

我并没有绑定到数据库,实体框架有一个本地属性,它给了我一个可观察的集合。我知道如何在datagrid中添加、删除和显示更改后的结果,但我不满足于更新,因为我必须对datagrid项调用refresh方法。因为我使用MVVM,所以我不知道如何在没有x:name的情况下刷新datagrid项!!!。。。你能试试我发布的代码吗?它可能会在没有调用的情况下更新Refresh@Kourosh那么,使用datagridName.Items.Refresh是否可以工作但不能满足您的要求,因为它违反了MVVM?或者它根本不起作用,不能像问题中所说的那样更新UI?我试过了,它起作用了,谢谢你。。。我告诉你,它可以用于添加和删除,但不能用于更新:@har07不,我在问如何刷新viewmodel中的datagrid项!!因为我无法访问datagrid!!它只是装订!
  <DataGrid x:Name="manPowerOrgDataGrid"
      ItemsSource="{Binding MyList}"
      Margin="0,0,0,184">