Je to velmi jednoduche, prosel jsem si nekolik vlaken na ruznych forech a na zadnem jsem nenasel kod, a vzhledem k tomu ze tato chyba je velmi casta, jsem se rozhodl napsat na svuj blog workaround, ktery se vztahuje na WPF a Windows Store aplikace, pravdepodobne pak i na Silverlight a Windows Phone. Pro overeni udelejte tyto veci:
1. Vytvorte globalni promennou typu Popup a jmena popup a na stranku(Page) dejte tlacitko, ktere bude do tohoto popupu pridavat dynamicky dalsi tlacitko pomoci vlastnosti Child.
2. Zaregistrujte handler Click tlacitku v Popupu a do jeho obsahu dejte tento kod:
1 2 |
popup.IsOpen = false; VisualTreeHelper.DisconnectChildrenRecursive(popup); |
3. Zakomentujte v tom mem kodu druhy radek a zkuste spustit. Pri druhe zobrazeni popupu se vam vyhodi vyjimka System.ArgumentException. Odkomentujte druhy radek a melo by vam to fungovat. Ja jeste navic pridavam ke kazdemu prvku(jak k popupu tak k jeho potomku inkrementujici se ID s nazvem tridy, takze kdyby vam to nefungovalo, udelejte to taky – pro jistotu).