Указанный элемент уже является логическим дочерним элементом другого элемента.Сначала отключи - PullRequest
0 голосов
/ 27 января 2012

Хорошо, поэтому я делаю систему меню WPF, и проблема в следующем:

У меня есть MainWindow, в котором есть кнопка, которая запускает переход к следующему элементу управления 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;
}

1 Ответ

0 голосов
/ 27 января 2012

В Back_Click просто вызовите UnloadPage.

ShowPage(newPage), уже присвоив newPage свойству Content contentPresenter, поэтому последующий вызов SetCurrentPage завершится неудачно, так какСтраница уже дочерняя от ведущего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...