Je suis actuellement aux prises avec un crash dont je ne connais pas vraiment l'origine ou la solution.Élément déjà enfant d'un autre élément - PivotItems
J'ai un ViewModelLocator avec ma machine virtuelle qui a été enregistré dans le constructeur (
ctor { ... SimpleIoc.Default.Register<TabMainViewModel>(); }
public TabMainViewModel TabMainVm => ServiceLocator.Current.GetInstance<TabMainViewModel>();
Ce VML est ensuite utilisé par le XAML en tant que ressource statique
DataContext="{Binding Source={StaticResource ViewModelLocator}, Path=TabMainVm}"
<Pivot ItemsSource="{Binding PivotItems}">
Et le TabMainViewModel ressemble à ceci:
public TabMainViewModel(MenuPivotFactory factory)
{
PivotItems = new ObservableCollection<PivotItem>(factory.PivotItems);
}
public ObservableCollection<PivotItem> PivotItems { get; set; }
Et l'usine est injectée par le ServiceLocator (également régi STERED) et il vient de créer une liste de
de 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))
},
J'espère que cela mon processus de création d'un objet un peu clair.
Maintenant, je peux naviguer entre les différents PivotItems sans problème. Mais quand je m'éloigne, puis j'appuie sur le bouton de retour, parfois ça marche et parfois je suis jeté dans le App.g.i.cs avec l'erreur mentionnée dans le titre: Element est déjà enfant d'un autre élément. Pendant le débogage, j'arrive au point où la vue appelle la méthode get de la propriété VM PivotItems, puis renvoie cette erreur. Donc je suppose que cela a quelque chose à voir avec les Vues dans les PivotItems ou quelque chose comme ça.
Comment puis-je créer les objets correctement afin que cette erreur ne soit pas levée et que je puisse naviguer entre la page de tableau croisé dynamique et les autres pages sans planter?
Êtes-vous l'ajout/suppression des pivots? Ou est-ce toujours le même ensemble? – Depechie