我有一个用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());
}
}
}
我不确定您的布局如何,但是如果您想让窗口保持响应并进行精心设计,可以这样:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="40" />
</Grid.RowDefinitions>
<TextBox />
</Grid>
请注意,文本框将填满整个空间,但始终在底部保留40px。