C# 当数据库表中出现新行时,WPF MVVM DataGrid刷新
我想在从另一个应用程序向数据库表添加新行时自动刷新DataGrid。我正在使用ObservaleCollection,但它不起作用。我使用的是实体框架,代码优先。请帮帮我 查看:C# 当数据库表中出现新行时,WPF MVVM DataGrid刷新,c#,wpf,mvvm,datagrid,C#,Wpf,Mvvm,Datagrid,我想在从另一个应用程序向数据库表添加新行时自动刷新DataGrid。我正在使用ObservaleCollection,但它不起作用。我使用的是实体框架,代码优先。请帮帮我 查看: xmlns:wm="clr-namespace:Admin.ViewModels" <Window.DataContext> <wm:IncidentViewModel/> </Window.DataContext> <DataGrid
xmlns:wm="clr-namespace:Admin.ViewModels"
<Window.DataContext>
<wm:IncidentViewModel/>
</Window.DataContext>
<DataGrid
x:Name="DataGridIncidenty"
Grid.Column="0"
Grid.Row="1"
AutoGenerateColumns="False"
ColumnWidth="*"
MouseDoubleClick="Row_DoubleClick"
HorizontalAlignment="Stretch"
Margin="5,5,5,0"
IsReadOnly="True"
ColumnHeaderStyle="{StaticResource {ComponentResourceKey
TypeInTargetAssembly={x:Type filter:DataGridHeaderFilterControl},
ResourceId=DataGridHeaderFilterControlStyle}}"
filter:DataGridExtensions.IsClearButtonVisible="False"
ItemsSource="{Binding Incidents, UpdateSourceTrigger=PropertyChanged}"
SelectedIndex="0">
<DataGrid.Columns>
<DataGridTextColumn Header="HostName" Binding="{Binding Computer.Hostname}" Width="auto"/>
<DataGridTextColumn Header="Description" Binding="{Binding TextIncident}" Width="*">
</DataGrid.Columns>
</DataGrid>
namespace Admin.ViewModels
{
class IncidentViewModel:BaseViewModel
{
private ObservableCollection<Incident> _incidents;
public ObservableCollection<Incident> Incidents
{
get { return _incidents; }
set
{
_incidents = value;
OnPropertyChanged("Incidents");
}
}
public IncidentViewModel()
{
CC_RK2Entities context = new CC_RK2Entities();
Incidents = new ObservableCollection<Incident>(context.Incident);
}
}
}
xmlns:wm=“clr命名空间:Admin.ViewModels”
模型视图:
xmlns:wm="clr-namespace:Admin.ViewModels"
<Window.DataContext>
<wm:IncidentViewModel/>
</Window.DataContext>
<DataGrid
x:Name="DataGridIncidenty"
Grid.Column="0"
Grid.Row="1"
AutoGenerateColumns="False"
ColumnWidth="*"
MouseDoubleClick="Row_DoubleClick"
HorizontalAlignment="Stretch"
Margin="5,5,5,0"
IsReadOnly="True"
ColumnHeaderStyle="{StaticResource {ComponentResourceKey
TypeInTargetAssembly={x:Type filter:DataGridHeaderFilterControl},
ResourceId=DataGridHeaderFilterControlStyle}}"
filter:DataGridExtensions.IsClearButtonVisible="False"
ItemsSource="{Binding Incidents, UpdateSourceTrigger=PropertyChanged}"
SelectedIndex="0">
<DataGrid.Columns>
<DataGridTextColumn Header="HostName" Binding="{Binding Computer.Hostname}" Width="auto"/>
<DataGridTextColumn Header="Description" Binding="{Binding TextIncident}" Width="*">
</DataGrid.Columns>
</DataGrid>
namespace Admin.ViewModels
{
class IncidentViewModel:BaseViewModel
{
private ObservableCollection<Incident> _incidents;
public ObservableCollection<Incident> Incidents
{
get { return _incidents; }
set
{
_incidents = value;
OnPropertyChanged("Incidents");
}
}
public IncidentViewModel()
{
CC_RK2Entities context = new CC_RK2Entities();
Incidents = new ObservableCollection<Incident>(context.Incident);
}
}
}
namespace Admin.ViewModels
{
类IncidentViewModel:BaseViewModel
{
私人可观察收集事件;
公众可观察到的收集事件
{
获取{return\u事件;}
设置
{
_事件=价值;
不动产变更(“事件”);
}
}
公共事件视图模型()
{
CC_RK2Entities context=新的CC_RK2Entities();
事件=新的可观察集合(context.Incident);
}
}
}
您使用哪个数据库?服务器还是文件?我使用的是SQL server数据库也许你可以看看这个教程?Entity Framework不会从其他应用程序中获取任何插入的行,您必须执行查询。@MikeEason没错,但正确的方法只是从数据库中更新模型,对吗?下面是应用程序在数据库更改时必须注意的问题,这就是我发布上述教程的原因