Открыть другое окно внутри текущего окна (WPF)


#1

Нужно открыть окно в окне.

Короче, есть MainWindow, и SecondWindow, мне нужно открыть SecondWindow в MainWindow. Тобишь, типа как окно в окне. Пробовал многими способами, и ShowDialog использовал, и owner был - не помогает ничего, не получается

Пробовал через костыль, который вроде как рабочий, но не то что нужно. Он какбы создаёт иллюзию, что окно действительно в окне, перекрывая форму "как положено", но если перенести основное окошко за край, а только потом открыть своё второе окно - оно станет на левые координаты и будет мягко говоря не очень.

Вот код с этим костылём:

        var secondWindow = new SecondWindow();
    var x = Left;
    var y = Top;

    secondWindow.MaxHeight = Height;
    secondWindow.MaxWidth = Width;

    secondWindow.Owner = this;

    secondWindow.ShowDialog();

    secondWindow.Left = x;
    secondWindow.Top = y;

Как видно, тут чисто игра с координатами, а не "окно в окне"...

Как сделать правильно? Помогите пж.


#2

Забудь про окна. Это всё делается через Control.

Значит, тема такая. Пошагово пишу что нужно сделать:

1. Создаём простой Control.

2. ПКМ на проекте => Добавить => Пользовательский элемент управление - задали имя.

3. Поменяем UserControl на ContentControl (не обязательно)

4. Зададим шаблон контролу в XAML

5. Зададим ему имя

6. Создаём DependencyProperty для теста, добавляем в CS в контроле это:

public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
    "Text", typeof(string), typeof(PopUpControl), new PropertyMetadata(default(string)));

public string Text
{
get => (string) GetValue(TextProperty);
set => SetValue(TextProperty, value);
}

Последним штрихом - делаем свой дизайн окна и "внутренности" окна, свои свойства зависимостей и функционал открытия/закрытия