Elementy menu kontekstowego pakietu Windows Phone Toolkit są powiązane z niewłaściwym obiektem, gdy element jest usuwany, a następnie dodawany
Właśnie spotkałem poważny problem z menu kontekstowym, którego nie mogę rozwiązać przez wiele godzin.
Aby odtworzyć problem, stworzyłem nową aplikację Panorama z szablonami aplikacji dla Windows Phone 8 w Visual Studio 2012. Zainstalowałem zestaw narzędzi Windows Phone za pomocą narzędzia użytkowego i dodałem menu kontekstowe w szablonie danych pierwszego selektora długiej listy, który jest powiązany z elementami
<StackPanel Margin="0,-6,0,12">
<TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="{StaticResource PhoneFontSizeExtraLarge}"/>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem Header="{Binding LineOne}" Click="MenuItem_Click_1" Tag="{Binding}">
</toolkit:MenuItem>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</StackPanel>
Ustawiłem nagłówek na właściwość LineOne, aby ułatwić debugowanie. Załączam następujące wydarzenie:
private void MenuItem_Click_1(object sender, RoutedEventArgs e)
{
var itemViewModel = (ItemViewModel)((MenuItem)sender).Tag;
App.ViewModel.Items.Remove(itemViewModel);
App.ViewModel.Items.Add(new ItemViewModel { LineOne = "Test", LineTwo = "Test", LineThree = "Test" });
}
Używam aplikacji i używam menu kontekstowego, aby usunąć pierwszy element. Pierwszy element znika, a nowy element o nazwie Test pojawia się na dole listy zgodnie z oczekiwaniami. Jeśli trzymam ten nowy element, pozycja menu jest powiązana z „runtime one” (element, który został usunięty).
To był najprostszy kod, jaki mogłem odtworzyć, ale w mojej prawdziwej aplikacji mam prawie ten sam problem z bardziej znaczącym kodem do dodawania i usuwania różnych metod, a nawet różnych stron. Miałem polecenie powiązane, ale ponieważ powiązanie danych jest nieprawidłowe, polecenie jest uruchamiane w niewłaściwym modelu widoku z niewłaściwym parametrem.
Jakiś pomysł dlaczego tak się dzieje?