私は現在、その起源や解決策がわからないクラッシュに苦しんでいます。要素は既に別の要素の子要素です - PivotItems
私は、静的リソース
としてXAMLによって使用され、TabMainViewModelはこのようになりますされ、コンストラクタ(
ctor { ... SimpleIoc.Default.Register<TabMainViewModel>(); }
public TabMainViewModel TabMainVm => ServiceLocator.Current.GetInstance<TabMainViewModel>();
このVMLに登録された私のVMとViewModelLocatorを持っています。
public TabMainViewModel(MenuPivotFactory factory)
{
PivotItems = new ObservableCollection<PivotItem>(factory.PivotItems);
}
public ObservableCollection<PivotItem> PivotItems { get; set; }
そして、工場はServiceLocatorによって注入される(regi stered)とそれだけで私はこれが私のオブジェクトの作成プロセスがやや明確に願っていますPivotItemの
/*NavigationHelper*/
private static readonly IDictionary<Type, Type> ViewModelRouting
= new Dictionary<Type, Type>
{
{typeof(MonitorViewModel), typeof(MonitorView)},
{typeof(RouteViewModel), typeof(RouteView)},
{typeof(MapViewModel), typeof(MapView)}
}
public static Page GetView(Type viewModel)
{
return (Page)Activator.CreateInstance(ViewModelRouting[viewModel]);
}
/*Factory*/
new PivotItem
{
Header = new TabHeader {Label = "Monitor", Glyph = "\uE121"},
Content = NavigationHelper.GetView(typeof(MonitorViewModel))
},
のリストを作成します。
これで問題なく、さまざまなPivotItem間を移動できます。しかし、離れて戻るときに戻るボタンを押すと時々動作し、時にはタイトルに記載されているエラーでApp.g.i.csにスローされることがあります:要素は既に別の要素の子です。
デバッグ中に、ViewがVMのPivotItemsプロパティのgetメソッドを呼び出してから、このエラーがスローされます。だから、PivotItemsやその他のビューのビューとは何か関係があると思います。
オブジェクトを正しく作成してこのエラーがスローされないようにして、ピボットページと他のページとの間でクラッシュすることなくナビゲートできますか?
あなたはピボットを追加/削除されていますか?それともいつも同じセットですか? – Depechie