C# 实体框架加载和本地以获取ObservableCollection
我无法获取更新结果并将其显示到datagrid中,以下是我的代码: Xaml: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
<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">