C # WPF - Добавление потомка после выхода из полноэкранного режима добавляет его справа от того места, где он был - PullRequest
1 голос
/ 07 июня 2011

Я только запускаю WPF, поэтому только учусь, но столкнулся с проблемой при создании полноэкранного UIElement.

У меня есть горизонтальный StackPanel с 2 элементами UIE внутри: еще 2 StackPanel с, один слева содержит 3dViewport, а другой StackPanel из Button с, а другой справа содержит вертикальную панель стека Rectangle с.

Когда я делаю левый StackPanel в полноэкранном режиме, он работает нормально, я удаляю его из внешнего StackPanel и добавляю его как содержимое окна, как показано ниже в коде:

private void mediaFullscreen(object sender, RoutedEventArgs e)
    {
        containerPanel.Children.Remove(leftPanel);
        this.Content = leftPanel;

        this.WindowState = WindowState.Maximized;
        this.WindowStyle = WindowStyle.None;

        isFullscreen = true;
    }

Проблема в том, что когда я выхожу из полноэкранного режима, потому что я снова добавляю левый StackPanel к внешнему StackPanel, он добавляется в конец списка / дерева и поэтому появляется справа от (прежнего ) справа StackPanel (который содержит Rectangle с), а не слева, как это было до полноэкранного режима. Вот код, который я использую для выхода из полноэкранного режима:

private void keyDownHandler(object sender, KeyEventArgs e)
    {
        if (isFullscreen)
        {
            this.Content = Root;
            containerPanel.Children.Add(leftPanel);

            this.WindowState = WindowState.Normal;
            this.WindowStyle = WindowStyle.SingleBorderWindow;

            isFullscreen = false;
        }
    }

Есть ли способ добавить ребенка в определенную позицию, чтобы (бывший) левый StackPanel снова ставился слева, а не после (бывшего) правого StackPanel справа?

Спасибо за ваше время,

Infinitifizz

1 Ответ

0 голосов
/ 07 июня 2011

Ладно, только что разобрался, извините за публикацию вопроса, но я отвечу здесь для всех, у кого может быть такая же проблема.

Вместо использования: containerPanel.Children.Add(leftPanel); при выходе из полноэкранного режима я использовал: containerPanel.Children.Insert(0, leftPanel);, который вставляет элемент leftPanel в качестве первого индекса containerPanel, поэтому он слева, как это было до перехода полноэкранный режим.

Извините, что потратил ваше время,

InfinitiFizz

...