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