在WPF中限制“自动”和“1 *”的行高

我有一个WPF应用程序,其布局由顶级Grid的3行组成。

我希望中间行占用它所需的空间(它所需的最大空间是有限的,但取决于窗口的宽度)。 底行应占用剩余空间。 棘手的部分是顶行。 它的大小可以根据按钮切换大部分内容的可见性而变化。 我希望它最多使用50%的高度但不超过它真正需要的高度。 以下XAML描述了我想要完成的任务:

        

行是:

  1. WrapPanel
  2. WrapPanel
  3. TextBox

如果这很重要

如果我理解正确,您可以使用Auto ,然后将MaxHeight属性绑定到GridHeight 。 也许是这样的:

MaxHeightConverter.cs:

 public class MaxHeightConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) throw new ArgumentException("MaxHeightConverter expects a height value", "values"); return ((double)value / 2); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 

MyWindow.xaml:

 ... xmlns:converters="clr-namespace:MyApp.Namespace" ...                ... 

希望这可以帮助。

另一种只使用XAML的方法就是绑定到你想要的高度的隐藏对象: