1:我是在framework4.0winform下编写一个组件,这个组件有菜单命令和列表,其中列表是用
ElementHost组件添加了wpf下的datagrid组件实现的,代码如下:
mAlarmView = new DataGrid();
mAlarmView.ItemsSource = mDisplayAlarmRowList;
AlarmHost.Child = mAlarmView;
mAlarmView.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
mAlarmView.AutoGenerateColumns = false;
mAlarmView.IsReadOnly = true;
mAlarmView.CanUserResizeRows = false;
mAlarmView.Loaded += AlarmViewLoaded;
mAlarmView.PreviewMouseLeftButtonDown += AlarmViewPreviewMouseLeftButtonDown;
其中mDisplayAlarmRowList 是ObservableCollection<AlarmItem>类型
2:AlarmItem是行的数据类,它实现了INotifyPropertyChanged接口
3:列是动态添加的并且进行了样式绑定,这样运行起来的话,只要修改数据类和对行数据的属性修改就可以
实现列表的修改和行样式的修改
问题:
我运行的场景是列表数据在后台不断地增加删除,我打开画面时有时候datagrid框会卡死,不进行任何数据显示;
大多数情况下则没有问题,当卡死的时候这个组件的菜单还是可以用的,但是点击datagrid框则没有任何反应,好像接受不到
windows消息一样;
如果我打开一个包含datagrid的画面A,A显示正常,界面正常刷新,这时我再打开画面B,如果B出现卡死情况的话,则A
也会出现卡死的情况,A和B用的是同一个数据源.
请问一下这可能是什么原因造成的,我感觉就像winform向datarid发送消息的时候出现了问题,datagrid不在响应消息
这个问题困扰我很长时间了,请各位大牛帮我分析一下可能是什么原因,多谢!