在xaml中调整大小后如何获得新的窗口高度

问题描述 投票:0回答:1

我有一个用ResizeMode = CanResize初始化的UserControl,但是在用户通过拖动侧面调整窗口大小之后,我需要UserControl中的某些元素取决于窗口的高度。具体来说,我需要一个TextBox的大小始终具有小于窗口高度40的高度。

那么,在用户调整大小后如何获得新的窗口大小?

谢谢!

注意:感谢Pavel Anikhousk,使用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());
        }
    }
}

c# .net wpf xaml caliburn.micro
1个回答
1
投票

我不确定您的布局如何,但是如果您想让窗口保持响应并进行精心设计,可以这样:

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

请注意,文本框将填满整个空间,但始终在底部保留40px。

© www.soinside.com 2019 - 2024. All rights reserved.