2012-01-26 2 views
0

좋아, 그래서 나는 WPF 메뉴 시스템을 만들고있어 다음과 같이 문제는 :지정된 요소는 이미 다른 요소의 논리적 하위입니다. 빼 처음

나는 다음의 UserControl로 전환 트리거 버튼이있는 MainWindow를 가지고 :

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    NewPage newPage = new NewPage(); 
    pageTransitionControl.ShowPage(newPage); 
} 

을 이 UserControl (NewPage)에는 현재 UserControl을 전환해야하는 뒤로 단추가 있으므로 MainWindow로 돌아갑니다. 문제는 SetCurrentPage (UserControl을 UC)에있다

private void Back_Click(object sender, RoutedEventArgs e) 
{ 
    pageTransitionControl.SetCurrentPage(newPage); 
    pageTransitionControl.UnloadPage(); 
} 

는 - 그것은 "지정된 요소가 이미 다른 요소의 논리적 자식 먼저 분리합니다.."라고 나에게 이야기한다 -이 문맥에서 의미하는 것이/이것을 고치는 방법을 잘 모르겠습니다. Back_Click에서

void ShowNextPage() 
{ 
    currentPage.Loaded += newPage_Loaded; 
    contentPresenter.Content = currentPage; 
} 

public void UnloadPage() 
{ 
    Storyboard hidePage = (Resources[string.Format("{0}Out", TransitionType.ToString())] as Storyboard).Clone(); 
    hidePage.Completed += hidePage_Completed; 
    hidePage.Begin(contentPresenter); 
} 

void newPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    Storyboard showNewPage = Resources[string.Format("{0}In", TransitionType.ToString())] as Storyboard; 
    showNewPage.Begin(contentPresenter); 
} 

void hidePage_Completed(object sender, EventArgs e) 
{ 
    contentPresenter.Content = null; 
} 

public void SetCurrentPage(UserControl uc) 
{ 
    contentPresenter.Content = uc; 
} 

답변

0

단지 UnloadPage를 호출합니다.

ShowPage(newPage) 이미 때문에 SetCurrentPage에 대한 후속 호출은 페이지가 이미 발표자의 자식으로 실패 contentPresenter의하여 Content 속성에 newPage을 할당.

+0

방금 ​​NewPage의 Back_Click에서 UnloadPage()를 호출하면 아무 것도 수행하지 않습니다. 뒤로 버튼이 MainWindow에 있으면, 그것을 제거하지만, 내가 원하는 것을하지 않습니다 ... 왜 이것이지 모르겠습니다. – Michael

관련 문제