Prism と Unity で WPF を使用する -
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));
}