Как задать начальную высоту контрола в окне, но чтобы при изменении размера окна размер контрола менялся?

139
10 июля 2019, 17:00

Хочу сделать окно с полем ввода. При открытии окна высота поля ввода TextBox должна быть строго 100 px, а размер окна должен подстроиться под высоту TextBox. Но после открытия окна, если менять его размеры, высота TextBox тоже должна меняться.

Способ задать высоту окна не подходит, потому что тогда высота TextBox при разных темах Windows будет разная.

<Window SizeToContent="Height">
    <TextBox Margin="20"
             InitialHeight="100" />
</Window>

UPD:

Упрощаем задачу: как задать, чтобы высота рабочей области окна при открытии была 100 px, но потом менялась вместе с размером окна?

<Window SizeToContent="Height">
    <Grid Height="100" Background="Yellow" />
</Window>
Answer 1

Первое решение оказалось сложным:

public MainWindow()
{
    InitializeComponent();
    textBox.Height = 100;
    double firstHeight = 0;
    this.SizeChanged += (s, e) => // TODO: отписаться от события
    {
        if (firstHeight == 0)
            firstHeight = this.Height;
        else if (this.Height != firstHeight)
            textBox.Height = double.NaN;
    }
}

Второе решение получилось намного изящней:

<Window SizeToContent="Height">
    <TextBox Margin="20" Height="100" />
</Window>

public MainWindow()
{
    InitializeComponent();
    Loaded += (s, e) =>
    {
        ClearValue(SizeToContentProperty);  // this.SizeToContent = SizeToContent.Manual;
        textBox.ClearValue(HeightProperty); // textBox.Height = double.NaN;
    };
}
READ ALSO
выборка данных из бд в Laravel

выборка данных из бд в Laravel

Есть таблица которая наполовину состоит из внешних ключейКак в Laravel через фасад DB построить запрос, чтобы вместо ключей выводилась полная...

162
yii 2 регистрация пользователя

yii 2 регистрация пользователя

Пытаюсь расширить форму регистрации, добавить к стандартным полям новые, например телефон

158
Как оптимизировать данный кусок кода?

Как оптимизировать данный кусок кода?

yii2, рендерю view записи, также нужно добавлять кнопки "вперед" и "назад", для навигации по записям

155
Чем смотреть логи error.log? [закрыт]

Чем смотреть логи error.log? [закрыт]

При распаковке одного архива из десятка domainru

165