ObservableCollection 丢失了它的集合
ObservableCollection loses its collection
将 WPF 与 Prism 和 Unity 结合使用 -
我有一个奇怪的缺陷,即 ObservableCollection 正在丢失其集合。
我添加了一个真实的支持字段,看看自动 属性 是否发生了一些有趣的事情。
我在该字段上添加了一个 CollectionChanged 事件处理程序,它只在我期望的时候触发。
我正在使用服务定位器检索实例,所以我想我可能得到了一个不同的实例,但其他属性和字段具有之前访问的预期值。
存储 ViewModel -
this.Container.RegisterInstance(
new ShellViewModel(), new ContainerControlledLifetimeManager());
正在检索 -
return App.getUnityContainer().Resolve<ShellViewModel>();
ObservableCollection 字段 -
private readonly ObservableCollection<BusinessProcessViewModel> openBusinessProcesses =
new ObservableCollection<BusinessProcessViewModel>();
ObservableCollection 属性 -
public ObservableCollection<BusinessProcessViewModel> OpenBusinessProcesses
{ get { return openBusinessProcesses; } }
ObservableCollection 字段事件处理程序 -
private void AttachEventHandlers()
{
openBusinessProcesses.CollectionChanged += openBusinessProcesses_CollectionChanged;
}
void openBusinessProcesses_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
logger.Info(String.Format("OpenBusinessProcess collection changed. Action: {0}, Added: {1}, Removed: {2}", e.Action, e.NewItems, e.OldItems));
}
谢谢阿列克谢。你让我走上了正确的轨道。
我忘了我在视图中添加了自动装配,所以我有两个视图模型实例。
这是我从 xaml 标记中删除的部分 -
viewModel:ViewModelLocator.AutoWireViewModel="True"
为清楚起见更新 -
ObservableCollection 没有被清空。视图中的自动装配加上显式模型创建导致了视图模型的两个实例。
将 WPF 与 Prism 和 Unity 结合使用 -
我有一个奇怪的缺陷,即 ObservableCollection 正在丢失其集合。
我添加了一个真实的支持字段,看看自动 属性 是否发生了一些有趣的事情。
我在该字段上添加了一个 CollectionChanged 事件处理程序,它只在我期望的时候触发。
我正在使用服务定位器检索实例,所以我想我可能得到了一个不同的实例,但其他属性和字段具有之前访问的预期值。
存储 ViewModel -
this.Container.RegisterInstance(
new ShellViewModel(), new ContainerControlledLifetimeManager());
正在检索 -
return App.getUnityContainer().Resolve<ShellViewModel>();
ObservableCollection 字段 -
private readonly ObservableCollection<BusinessProcessViewModel> openBusinessProcesses =
new ObservableCollection<BusinessProcessViewModel>();
ObservableCollection 属性 -
public ObservableCollection<BusinessProcessViewModel> OpenBusinessProcesses
{ get { return openBusinessProcesses; } }
ObservableCollection 字段事件处理程序 -
private void AttachEventHandlers()
{
openBusinessProcesses.CollectionChanged += openBusinessProcesses_CollectionChanged;
}
void openBusinessProcesses_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
logger.Info(String.Format("OpenBusinessProcess collection changed. Action: {0}, Added: {1}, Removed: {2}", e.Action, e.NewItems, e.OldItems));
}
谢谢阿列克谢。你让我走上了正确的轨道。
我忘了我在视图中添加了自动装配,所以我有两个视图模型实例。
这是我从 xaml 标记中删除的部分 -
viewModel:ViewModelLocator.AutoWireViewModel="True"
为清楚起见更新 -
ObservableCollection 没有被清空。视图中的自动装配加上显式模型创建导致了视图模型的两个实例。