2012-01-26 69 views
0

好了,所以我在做一個WPF的菜單系統和問題如下:指定的元素已經是另一個元素的邏輯子元素。斷開它首先

我有有一個按鈕,觸發到下一個用戶控件轉變的主窗口:

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

在這個UserControl(NewPage)上,它有一個後退按鈕,它應該轉換當前的UserControl,所以它返回到MainWindow。

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

問題在於SetCurrentPage(用戶控件UC) - 它告訴我,「指定的元素已經是另一個元素的邏輯子第一斷開它。」 - 我不確定在這種情況下這意味着什麼/如何解決這個問題?

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

Back_Click只需調用UnloadPage

ShowPage(newPage)已經分配給newPagecontentPresenter的的Content屬性,因此對SetCurrentPage後續調用失敗的頁面已經是演講的孩子。

+0

如果我只是在NewPage上的Back_Click中調用UnloadPage(),它什麼都不做。如果後退按鈕位於MainWindow上,它會將其刪除,但那不是我想要的......我不確定這是爲什麼。 – Michael 2012-01-26 23:05:09

相關問題