我是 WPF 新手,我找不到解决问题的方法。
我的 ViewModel 中有一个 Observable 集合:
ObservableCollection<Process>
在 Process 类中是另一个 ObervableCollection:
ObservableCollection<BurstTime>
我想每次在我的视图中动态添加一个新的用户控件(可以可视化进程数据的实际状态,以及它的突发时间),当激活一个新进程时,并在进程启动时将其删除结束(当可观察的集合发生变化时)..在它运行期间,我想显示它的 Burst Time 集合,什么可以及时改变..
我尝试在我的用户控件的代码隐藏中订阅 CollectionChanged 事件,并在另一个用户控件中使用用户控件,并在我的事件处理程序运行时动态创建所需的 TextBlocks,但我总是得到一个 System.Reflection.TargetInvocationException(内部异常:系统.NullReferenceException) 当我的外部 InitializeComponent() 正在运行时..
public ResourceUseView()
{
InitializeComponent();
((ObservableCollection<Process>)DataContext).CollectionChanged += ResourceUseView_CollectionChanged;
}
有可能做到吗?是否可以在对 ObservableCollection 的元素更改做出反应时在我的外部 UserControl 的代码隐藏中创建或删除用户控件,并在内部 ObservableCollection 中的元素更改时更新外部控件?除了动态地在另一个用户控件中实例化用户控件之外,还有其他方法吗?有什么特殊的控件,什么可以在 ObservableCollection 中显示 ObservableCollection?
(如果可能的话,我希望拥有不同的用户控件,就像我的 ObservableCollection 拥有的元素一样......)
谢谢你的帮助!