指定的元素已经是另一个元素的逻辑子元素.先断开连接

本文关键字:元素 断开 连接 另一个 | 更新日期: 2023-09-27 18:21:29

好的,所以我正在制作一个WPF菜单系统,问题如下:

我有一个主窗口,它有一个按钮,可以触发到下一个UserControl:的转换

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(UserControl-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;
}

指定的元素已经是另一个元素的逻辑子元素.先断开连接

Back_Click中,只需调用UnloadPage

ShowPage(newPage)已经将newPage分配给contentPresenterContent属性,因此对SetCurrentPage的后续调用失败,因为页面已经是演示者的子页面。