Как получить новую высоту окна после изменения размера в xaml - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть UserControl, который я инициализировал с помощью ResizeMode = CanResize, но мне нужно, чтобы определенные элементы в UserControl зависели от высоты окна после того, как пользователь изменяет его размер путем перетаскивания сторон. В частности, мне нужно, чтобы размер TextBox всегда имел высоту, которая на 40 меньше высоты окна.

Итак, как я могу получить этот новый размер окна после изменения размера пользователя?

Спасибо!

ПРИМЕЧАНИЕ: Благодаря Павлу Анихуску, использование ActualHeight работает. Для дальнейшего использования это был мой код:

<RowDefinition Height="{Binding ActualHeight, Converter={convs:ChatTextBoxSizeConverter}}" />

и ChatTextBoxSizeConverter.cs

namespace Converters
{
    [ValueConversion(typeof(string), typeof(string))]
    public class ChatTextBoxSizeConverter : MarkupExtension, IValueConverter
    {
        private static ChatTextBoxSizeConverter instance_;

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (System.Convert.ToInt32(value) - 40);
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
        {
            return null;
        }

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return instance_ ?? (instance_ = new ChatTextBoxSizeConverter());
        }
    }
}

1 Ответ

1 голос
/ 26 февраля 2020

Я не уверен в том, как устроен ваш макет, но если вы хотите, чтобы ваше окно было отзывчивым и хорошо оформленным, это может быть так:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="40" />
    </Grid.RowDefinitions>
    <TextBox />
</Grid>

Обратите внимание, что TextBox заполнит все пространство, но 40px всегда зарезервировано внизу.

...