Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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# 当数据库表中出现新行时,WPF MVVM DataGrid刷新_C#_Wpf_Mvvm_Datagrid - Fatal编程技术网

C# 当数据库表中出现新行时,WPF MVVM DataGrid刷新

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

我想在从另一个应用程序向数据库表添加新行时自动刷新DataGrid。我正在使用ObservaleCollection,但它不起作用。我使用的是实体框架,代码优先。请帮帮我

查看:

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没错,但正确的方法只是从数据库中更新模型,对吗?下面是应用程序在数据库更改时必须注意的问题,这就是我发布上述教程的原因