PopUp
및 그 내용을 App.xaml Resources
에 정의하면 해당 페이지에 표시된 것과 다른 시각적 트리에 할당됩니다. IsOpen
속성을 실제 작업으로 설정하면 실제로 보이게하기에는 충분하지 않으므로 PopUp
을 현재 시각적 트리에 추가해야합니다. PopUp
에 이미 Parent
이 있기 때문에 두 번째 문제가 발생합니다. InvalidOperationException
이 생기기 때문에 페이지에 직접 추가 할 수 없습니다.
여기에 가능한 솔루션입니다 :
popup = App.Current.Resources["popup"] as Popup;
App.Current.Resources.Remove("popup"); // remove the PopUp from the Resource and thus clear his Parent property
ContentPanel.Children.Add(popup); // add the PopUp to a container inside your page visual tree
popup.IsOpen = true;
이 방법은 더 이상 응용 프로그램의 리소스 사전 내에서의 참조가 없습니다 및이 방법에 대한 후속 호출을 시도하는 경우는 NullReferenceException이로 인해 실패 할주의 . 약간의 코드를 사용하여이 문제를 해결하고 팝업을 닫을 때 리소스에 다시 추가 할 수 있습니다.
popup.IsOpen = false; // 이전에 저장된 PopUp에 대한 로컬 참조 ContentPanel.Children.Remove (popup); // 현재 시각적 트리에서 제거 App.Current.Resources.Add ("popup", popup); // 리소스에 다시 추가하십시오.
이 코드가 작동하고 팝업이 올바르게 표시 될 수 있지만, 실제로는 PopUp
에 대한 과장이라고 생각됩니다. 페이지 내에서 실제로 정의 할 수 있고 변경하면 IsOpen
속성
도움 주셔서 감사합니다. –