你的代码:
<Window
....
x:Name="mainWindow"
SizeToContent="WidthAndHeight"
ResizeMode="CanResizeWithGrip"
MinHeight="{Binding ElementName=mainWindow, Mode=OneTime, Path=ActualHeight}"
>
它不起作用,因为默认值ActualHeight为零,并且当 WPF 框架调整窗口大小时,它已经分配MinHeight了默认值ActualHeight为零!
您可以尝试的第一件事是:更改Mode=OneTime为Mode=Default,以便 WPF在调整窗口大小MinHeight时可以更新。ActualHeight如果这行得通,那么你会很高兴。
否则,您必须处理该SizeChanged事件,并且在处理程序中您可以更新MinHeight.
<Window
....
x:Name="mainWindow"
SizeToContent="WidthAndHeight"
ResizeMode="CanResizeWithGrip"
SizeChanged="Window_SizeChanged"
>
在代码隐藏中:
bool firstTime= true;
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
if ( firstTime)
{
element.MinHeight = e.NewSize.Height;
firstTime= false;
}
}
希望它能解决你的问题。或者至少会给你一些关于如何进行的想法。如果要固定窗口的大小,也可以MaxHeight在Window_SizeChanged()处理程序中设置。
仅 XAML 解决方案
<Window
x:Name="mainWindow"
SizeToContent="WidthAndHeight"
ResizeMode="CanResizeWithGrip"
>
<Window.Triggers>
<EventTrigger RoutedEvent="SizeChanged">
<BeginStoryboard>
<Storyboard Storyboard.TargetName="mainWindow">
<DoubleAnimation Storyboard.TargetProperty="MinHeight"
To="{Binding ElementName=mainWindow, Path=ActualHeight}"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Window.Triggers>
<!---- other code goes here--->
</Window>