Ваш код:
<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"
>
* 1019.* В коде позади:
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 ONLY SOLUTION
<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>